代码复现|QT快速入门 (课程来自B站)--其三

 自己跟着老师的课程一步步跟着写下来的,有需要的可以自取,有用的话还希望点一个小小的赞同哦~

QT快速入门 | 最简单最简洁的QT入门教程 | 嵌入式UI

三、QObject 定时器

objectTimer/ widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#define TIMEOUT  1*1000

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget  //Widget继承于QWidget,QWidget继承于QObject.
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    virtual void timerEvent(QTimerEvent*  event);//把虚函数继承到Widget里面,需要重写虚函数virtual可写可不写,
    //根据参数event区分哪个定时器,参数获取当前定时器的编号
    ~Widget();

private:
    Ui::Widget *ui;
    int myTimerId;
    int picID;  //第几张图片

private slots:
    void on_startBt_clicked();
    void on_stopBt_clicked();
};
#endif // WIDGET_H

objectTimer/widget.cpp 

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent):
    QWidget(parent),
    ui(new Ui::Widget)   //构造函数
{
    ui->setupUi(this);

    picID = 2;
    //程序刚启动时显示一张图片
    QPixmap pix("D:\\QT\\Qtproject\\QtOnline\\picture_test\\8.jpg");
    //显示
    ui->label->setPixmap(pix);
}

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

void Widget::on_startBt_clicked()
{
    //开启定时器,返回定时器的编号
    myTimerId = this->startTimer(TIMEOUT);  //this指的是Widget。startTimer以毫秒为单位,为开启定时器函数

}

//定义定时器事件
void Widget::timerEvent(QTimerEvent *event)
{
    if(event->timerId() != myTimerId) //判断触发事件的定时器和我们需要的定时器是否相等
    {
        return;
    }

    QString path("D:\\QT\\Qtproject\\QtOnline\\picture_test\\");
    path += QString::number(picID);  //picID是整数型,加number转换成qstring类型字符串
    path += ".jpg";                  //Qlabel下的scaledContent(bool)能自动适配标签(自动调整图片大小)

    QPixmap pix(path);
    ui->label->setPixmap(pix);

    picID++;
    if (5 == picID)
    {
        picID = 1;
    }
}
void Widget::on_stopBt_clicked()
{
    this->killTimer(myTimerId);  //定时器停止函数
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值