目录
1.ui界面
2.头文件
3.cpp源文件
4.main文件
5.关于ui_mytimerevent.h的代码编译错误
6.图片的添加展示方式
7.结果展示
8.参考文章
1.ui界面
2.头文件
#ifndef MYTIMEREVENT_H
#define MYTIMEREVENT_H#include <QMainWindow>
#include <QTime>
//#include <QTimerEvent>
QT_BEGIN_NAMESPACE
namespace Ui { class MyTimerEvent; }
QT_END_NAMESPACEclass MyTimerEvent : public QMainWindow
{Q_OBJECTpublic:MyTimerEvent(QWidget *parent = nullptr);~MyTimerEvent();
protected:void timerEvent(QTimerEvent* event);private slots:void on_startPushButton1_clicked();void on_stopPushButton1_clicked();void on_startPushButton2_clicked();void on_stopPushButton2_clicked();private:Ui::MyTimerEvent *ui;int m_timer1Id;int m_timer2Id;};
#endif // MYTIMEREVENT_H
3.cpp源文件
#include "mytimerevent.h"
#include "ui_mytimerevent.h"
#include<QDebug>
#include<QTime>MyTimerEvent::MyTimerEvent(QWidget *parent): QMainWindow(parent),ui(new Ui::MyTimerEvent)//m_timer1Id(-1);//m_timer2Id(-1);
{ui->setupUi(this);// 显示图片ui->label->setPixmap(QPixmap(":/new/prefix1/img/mainLocker.png"));ui->label->setScaledContents(true); // 设置图片自适应标签大小
}MyTimerEvent::~MyTimerEvent()
{delete ui;
}void MyTimerEvent::timerEvent(QTimerEvent *event)
{if(event->timerId() == m_timer1Id){qDebug()<<"定时器1:"<<QTime::currentTime().toString("hh:mm:ss");}else if(event->timerId() == m_timer2Id){qDebug()<<"定时器2:"<<QTime::currentTime().toString("hh:mm:ss");}
}void MyTimerEvent::on_startPushButton1_clicked()
{m_timer1Id = startTimer(1000*3);qDebug()<<"定时器1开始:"<<QTime::currentTime().toString("hh:mm:ss");
}void MyTimerEvent::on_stopPushButton1_clicked()
{killTimer(m_timer1Id);qDebug()<<"定时器1停止:"<<QTime::currentTime().toString("hh:mm:ss");
}
void MyTimerEvent::on_startPushButton2_clicked()
{m_timer2Id = startTimer(1000*5);qDebug()<<"定时器2开始:"<<QTime::currentTime().toString("hh:mm:ss");
}void MyTimerEvent::on_stopPushButton2_clicked()
{killTimer(m_timer2Id);qDebug()<<"定时器2停止:"<<QTime::currentTime().toString("hh:mm:ss");
}
4.main文件
5.关于ui_mytimerevent.h的代码编译错误
Qt软件应会自动构建并更新其相应的ui_xxxx.h的头文件,但在我的项目构建过程中,在其cpp源文件中,#include "ui_mytimerevent.h" // 需要确保包含了 UI 头文件。mytimerevent.ui 是 Qt Designer 中设计的 UI 文件,经过 uic 处理后,会生成ui_mytimerevent.h。其中包含Ui::MyTimerEvent类的定义,但实际上uic并没有生成了正确的头文件ui_mytimerevent.h。
首先,在确保我的项目文件.pro中正确地包含了.ui文件,并且项目已经配置为正确使用uic来生成 UI 相关的头文件,确保无误重新编译生成依然无效,新添加的代码功能并没有在运行时展示。
但在引用后依旧出现构建的界面不是新添加的界面,在确认 .pro 文件没有问题,尝试手动运行 uic 工具,看看是否能成功生成头文件,可在对应的项目目录下运行以下命令
uic mytimerevent.ui -o ui_mytimerevent.h
这条命令会手动运行 uic,并生成一个名为 ui_mytimerevent.h 的头文件。然后便可以手动检查是否可以找到Ui::MyTimerEvent类定义,获得最新的ui_mytimerevent.h后再次引用。最后,清理项目,生成qmake,重新构建,便可得到修改后的qt界面。
新更新的ui_mytimerevent.h文件若没有及时出现在Qt界面内,也可手动进行添加设定,步骤如下。
6.图片的添加展示方式
QT三种方式插入图片资源,控件显示图片_qt插入图片-CSDN博客
7.结果展示
定时器1是3s打印1次,定时器2是5s打印1次,右侧为图片展示效果。
8.参考文章
Qt中定时器的使用_qt 定时器-CSDN博客
【QT】史上最全最详细的QSS样式表用法及用例说明_qt qss-CSDN博客
QT从入门到入土(五(2))——多线程(QtConcurrent::run())和线程池 - 唯有自己强大 - 博客园 (cnblogs.com)