2024.9.10 作业

代码:

/*******************************************/

文件名:widget.h

/*******************************************/

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QLabel>
#include <QTimeEdit>
#include <QTextEdit>
#include <QTimer>
#include <QPushButton>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = nullptr); // 构造函数
    ~Widget(); // 析构函数

private slots: // 槽函数
    void startTiming(); // 开始计时槽函数
    void stopTiming(); // 停止计时槽函数
    void checkTime(); // 检查时间槽函数
    void updateDateTime(); // 更新日期时间槽函数

private:
    Ui::Widget *ui; // 由 Qt Designer 自动生成的界面类
    QLabel *lab; // 显示日期时间的标签
    QTimeEdit *timeEdit; // 时间编辑控件
    QTextEdit *textEdit; // 文本编辑控件
    QPushButton *pbn1; // "启动"按钮
    QPushButton *pbn2; // "取消"按钮
    QTimer *timer; // 定时器
    QTimer *dateTimeTimer; // 用于更新日期时间的定时器
};

#endif // WIDGET_H

/*******************************************/

文件名:widget.cpp

/*******************************************/

#include "widget.h"
#include "ui_widget.h"
#include <QDateTime>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget),
    lab(new QLabel(this)),
    timeEdit(new QTimeEdit(this)),
    textEdit(new QTextEdit(this)),
    pbn1(new QPushButton("启动", this)),
    pbn2(new QPushButton("取消", this)),
    timer(new QTimer(this)),
    dateTimeTimer(new QTimer(this)) // 创建一个定时器用于更新日期时间
{
    ui->setupUi(this);
    this->resize(1000, 800);
    this->setWindowTitle("work");

    lab->setParent(this);
    lab->resize(300, 120);
    lab->setFont(QFont("Arial", 15));
    lab->setStyleSheet("QLabel { border: 2px solid black; border-radius: 10px; padding: 2px; }");
    lab->move(100, 100);
    updateDateTime();

    timeEdit->setDisplayFormat("HH:mm:ss");
    timeEdit->setTime(QTime::currentTime());
    timeEdit->resize(300, 50);
    timeEdit->move(600, 100);

    textEdit->resize(800, 470);
    textEdit->move(100, 230);

    pbn1->resize(120, 50);
    pbn1->move(600, 170);

    pbn2->resize(120, 50);
    pbn2->move(780, 170);

    connect(pbn1, &QPushButton::clicked, this, &Widget::startTiming);
    connect(pbn2, &QPushButton::clicked, this, &Widget::stopTiming);
    connect(timer, &QTimer::timeout, this, &Widget::checkTime);
    connect(dateTimeTimer, &QTimer::timeout, this, &Widget::updateDateTime);

    timer->setInterval(1000); // 每秒检查一次
    dateTimeTimer->start(1000); // 每秒更新时间
}

Widget::~Widget()
{
    delete ui;
}

void Widget::startTiming()
{
    pbn1->setEnabled(false);
    pbn2->setEnabled(true);
    timeEdit->setEnabled(false);
    textEdit->setEnabled(false);
    timer->start(1000); // 每秒检查一次
}

void Widget::stopTiming()
{
    pbn1->setEnabled(true);
    pbn2->setEnabled(false);
    timeEdit->setEnabled(true);
    textEdit->setEnabled(true);
    timer->stop();
}

void Widget::checkTime()
{
    QString labelTime = lab->text().split(" ")[1].split(".")[0]; // 获取标签的时间部分
    if (labelTime == timeEdit->time().toString("HH:mm:ss")) {
        textEdit->setText("你好你好");
        stopTiming();
    }
}

void Widget::updateDateTime()
{
    lab->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
}

/*******************************************/

文件名:main.cpp

/*******************************************/

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

结果:

2024-09-10 20-26-18

思维导图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值