QML实现牛马新鞭子—别的语言有的Qt也必须有

“打工是不可能打工的,这辈子都不可能打工的……但看着钱一分一秒进账,打工的动力都多了三分。” 每个打工人的真实写照。上班没动力?工作太枯燥?牛马新鞭子,专为广大“牛马”量身定制的精神鞭策神器,让你在每一秒钟内感受到“工资抽打”的快感,让你从“摸鱼”中找到动力!

工程下载

通过网盘分享的文件:实时工资计算器-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 // 实时计算已赚金额
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客晨风

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值