“打工是不可能打工的,这辈子都不可能打工的……但看着钱一分一秒进账,打工的动力都多了三分。” 每个打工人的真实写照。上班没动力?工作太枯燥?牛马新鞭子,专为广大“牛马”量身定制的精神鞭策神器,让你在每一秒钟内感受到“工资抽打”的快感,让你从“摸鱼”中找到动力!
工程下载
通过网盘分享的文件:实时工资计算器-QML
链接: https://pan.baidu.com/s/1yncHFyhe362LydUo8JLC5g?pwd=jkcf 提取码: jkcf
每秒收入,动力无限
牛马新鞭子 不是普通的收入计算器,它让你在工作时,感受到钱在一秒一秒进账的快感,甚至在摸鱼时也能清楚地知道自己的每秒、每分钟、每小时赚了多少。它让你不再迷茫,知道每一秒钟自己到底值多少钱!
每秒钟收入、每分钟收入、每小时收入实时更新,摸鱼也能算工龄,上班也能有动力。你再也不会心虚,因为你知道即便在“摸鱼”,收入也在稳步增长。
被工资“抽打”的快乐
“我以为我在上班,实际上我在被抽!” 这就是牛马新鞭子的精髓:它让你体验到被工资数字“抽打”的快感。每秒、每分钟、每小时都在提醒你“你在加班,你在加鞭!”每一秒的上班时间都充满动力,你不再懒散,而是享受每秒钟的“被抽”快感。
适用人群
无论你是打字加班的程序员,还是前台接待的社畜,牛马新鞭子 都是你提升工作动力的好帮手!它适合所有打工人、社畜、搬砖侠、摸鱼达人,尤其是那些想知道自己每一秒值多少钱的好奇宝宝,或者需要“精神鞭策”的上班族。想体验“被工资支配的恐惧”?那就赶快加入吧!
让上班不再迷茫,摸鱼不再心虚!每秒钟都在“被工资抽打”的动力下,牛马新鞭子 带你走上最有“鞭策力”的打工之路!让我们一起感受“钱在眼前,动力无限”的快乐吧!🎉
源码
import QtQuick 2.15
import QtQuick.Controls 2.15
Window {
visible: true
width: 400
height: 700
title: "实时收入计算器"
property real salary: 0
property int workDays: 0
property real workStartHour: 9
property real workStartMinute: 0
property real workEndHour: 18
property real workEndMinute: 0
property real lunchBreak: 1 // 午休时间,单位:小时
property bool isWorking: false
property real rateSec: 0 // 每秒收入
property real rateMin: 0 // 每分钟收入
property real rateHour: 0 // 每小时收入
property real rateDay: 0 // 每天收入
property real elapsedTime: 0 // 已上班时间(秒)
property real earned: 0 // 已赚到的金额
property real workStartTime: 0 // 上班开始时间的时间戳
property real workDayHours: 0 // 每天的工作小时数
// 背景渐变
Rectangle {
width: parent.width
height: parent.height
color: "white"
gradient: Gradient {
GradientStop { position: 0; color: "#e0e7ef" }
GradientStop { position: 1; color: "#f8fafc" }
}
}
Column {
id: column
width: parent.width
spacing: 15
anchors.centerIn: parent
// 标题
Text {
text: "实时收入计算器"
font.bold: true
font.pointSize: 24
color: "#1976d2"
anchors.horizontalCenter: parent.horizontalCenter
}
// 提示信息
Text {
text: "请输入你的每月工资、每月上班天数、每天上班时间段(上班时间、下班时间)和午休时间,点击“开始上班”即可实时看到你的收入增长!"
horizontalAlignment: Text.AlignLeft
font.pointSize: 14
color: "#555"
wrapMode: Text.Wrap
font.bold: true
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width*0.8
}
// 输入框
Row {
spacing: 10
width: parent.width * 0.8
anchors.horizontalCenter: parent.horizontalCenter
Text {
width: 120
text: "每月工资(元)"
font.pointSize: 14
color: "#555"
anchors.verticalCenter: parent.verticalCenter
font.bold: true
}
TextField {
id: salaryInput
placeholderText: "如 2500"
text: salary.toString()
font.bold: true
onTextChanged: {
salary = parseFloat(salaryInput.text) || 0
}
}
}
Row {
spacing: 10
width: parent.width * 0.8
anchors.horizontalCenter: parent.horizontalCenter
Text {
width: 120
text: "每月上班天数"
font.pointSize: 14
color: "#555"
font.bold: true
anchors.verticalCenter: parent.verticalCenter
}
TextField {
id: workDaysInput
placeholderText: "如 22"
text: workDays.toString()
font.bold: true
onTextChanged: {
workDays = parseInt(workDaysInput.text) || 0
}
}
}
Row {
spacing: 10
width: parent.width * 0.8
anchors.horizontalCenter: parent.horizontalCenter
Text {
width: 120
text: "上班时间"
font.pointSize: 14
color: "#555"
font.bold: true
anchors.verticalCenter: parent.verticalCenter
}
TextField {
id: workStartInput
placeholderText: "如 09:00"
text: workStartHour.toFixed(2)
font.bold: true
onTextChanged: {
var start = workStartInput.text.split(":")
workStartHour = parseFloat(start[0]) || 9
workStartMinute = parseFloat(start[1]) || 0
}
}
}
Row {
spacing: 10
width: parent.width * 0.8
anchors.horizontalCenter: parent.horizontalCenter
Text {
width: 120
text: "下班时间"
font.pointSize: 14
color: "#555"
font.bold: true
anchors.verticalCenter: parent.verticalCenter
}
TextField {
id: workEndInput
placeholderText: "如 18:00"
text: workEndHour.toFixed(2)
font.bold: true
onTextChanged: {
var end = workEndInput.text.split(":")
workEndHour = parseFloat(end[0]) || 18
workEndMinute = parseFloat(end[1]) || 0
}
}
}
Row {
spacing: 10
width: parent.width * 0.8
anchors.horizontalCenter: parent.horizontalCenter
Text {
width: 120
text: "午休时间(小时)"
font.pointSize: 14
color: "#555"
font.bold: true
anchors.verticalCenter: parent.verticalCenter
}
TextField {
id: lunchInput
placeholderText: "如 1小时"
text: lunchBreak.toString()
font.bold: true
onTextChanged: {
lunchBreak = parseFloat(lunchInput.text) || 1
}
}
}
// 开始上班按钮
Button {
width: 120
height: 50
visible: true
text: isWorking ? "上班中..." : "开始上班"
highlighted: false
icon.color: "#ff0303"
font.bold: true
display: AbstractButton.TextOnly
checkable: false
flat: false
anchors.horizontalCenter: parent.horizontalCenter
onClicked: {
if (!isWorking) {
if (salary > 0 && workDays > 0 && workStartHour > 0 && workEndHour > 0) {
// 计算工作日的实际工作小时数
workDayHours = (workEndHour - workStartHour - lunchBreak) + (workEndMinute - workStartMinute) / 60
// 计算每秒、每分钟、每小时收入
rateSec = salary / (workDays * workDayHours * 3600) // 每秒收入
rateMin = rateSec * 60 // 每分钟收入
rateHour = rateSec * 3600 // 每小时收入
rateDay = rateHour * workDayHours // 每天收入
// 记录上班开始时间的时间戳
workStartTime = new Date(Date.now()).setHours(workStartHour, workStartMinute, 0, 0)
isWorking = true
elapsedTime = 0 // 初始化已上班时间
earned = 0 // 初始化已赚金额
// 启动计时器
timer.start()
} else {
console.log("请输入有效的工资、上班天数和工作时间段")
}
} else {
isWorking = false
timer.stop()
}
}
}
// 计时和收入显示区域
Column {
spacing: 10
width: parent.width * 0.8
anchors.horizontalCenter: parent.horizontalCenter
Text {
text: "已上班时间: " +
(Math.floor(elapsedTime / 3600)).toString().padStart(2, "0") + "小时 " +
(Math.floor((elapsedTime % 3600) / 60)).toString().padStart(2, "0") + "分钟 " +
(Math.floor(elapsedTime % 60)).toString().padStart(2, "0") + "秒"
font.pointSize: 16
color: "#1976d2"
}
Text {
text: "已赚到: " + earned.toFixed(4) + "元"
font.pointSize: 16
color: "#d32f2f"
}
Rectangle {
width: parent.width
height: 1
color: "#b0c4de"
anchors.horizontalCenter: parent.horizontalCenter
}
Text {
text: "每 天 收 入: " + rateDay.toFixed(4) + "元"
font.pointSize: 16
color: "#1976d2"
}
Text {
text: "每小时收入: " + rateHour.toFixed(4) + "元"
font.pointSize: 16
color: "#1976d2"
}
Text {
text: "每分钟收入: " + rateMin.toFixed(4) + "元"
font.pointSize: 16
color: "#1976d2"
}
Text {
text: "每秒钟收入: " + rateSec.toFixed(4) + "元"
font.pointSize: 16
color: "#1976d2"
}
}
}
// 定时器
Timer {
id: timer
interval: 100 // 每秒更新一次
running: false
repeat: true
onTriggered: {
if (isWorking) {
var currentTime = Date.now() // 获取当前时间戳
var workTimeDiff = (currentTime - workStartTime) / 1000 // 已上班的时间(秒)
elapsedTime = workTimeDiff // 更新已上班时间
earned = elapsedTime * rateSec // 实时计算已赚金额
}
}
}
}