代码:
/*******************************************/
文件名: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