当前位置: 首页 > article >正文

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)


http://www.kler.cn/a/420556.html

相关文章:

  • 大R玩家流失预测在休闲社交游戏中的应用
  • rpm包转deb包或deb包转rpm包
  • vue2+svg+elementui实现花瓣图自定义el-select回显色卡图片
  • 夜神模拟器+Charles+postern+Mgisk+TrustMeAlready实现抓包
  • centos搭建keepalive
  • LLM*:路径规划的大型语言模型增强增量启发式搜索
  • 2017 NHOI小学(C++)
  • MySQL 单表练习
  • C#中的集合初始化器
  • TongRDS分布式内存数据缓存中间件
  • 《数据结构》学习系列——图(下)
  • flink学习(14)—— 双流join
  • Redis开发05:使用stackexchange.redis库对redis进行增删改查
  • 前端【9种前端常见的设计模式】
  • 详解Qt Pdf之QPdfBookmarkModel 读取pdf标签页并显示
  • 创建 EC2块存储磁盘并将其连接到 Linux 实例
  • Vue3.5新版本特性一览-数组操作10倍性能提升+响应式属性解构+自定义组件优化+ssr水合改善+teleport支持defer!
  • Maven、JAVAWeb、Servlet
  • CS144 (二)
  • Redhat8部署docker27.3.0 防火墙策略怎样配置
  • 使用pymupdf提取PDF文档中的文字和其颜色
  • 前端基础的讲解-JS(18)
  • CentOS修改yum.repos.d源,避免“Could not resolve host: mirrorlist.centos.org”错误
  • 【C++】多线程
  • 如何成为一名优秀的炼丹师(三)
  • Docker下的seafile修改配置参数