Qt的定时器应用案例 || Qt的图片添加显示
目录
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_NAMESPACE
class MyTimerEvent : public QMainWindow
{
Q_OBJECT
public:
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)