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

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

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

四、QTimer 定时器

QTimer/widget.h 

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTimer>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    int picID;
    ~Widget();

private slots:
    void on_startBt_clicked();
    void timeoutSlot();

    void on_stopBt_clicked();

    void on_singleBt_clicked();

private:
    Ui::Widget *ui;
    QTimer  *timer;  //定义一个指针对象
};
#endif // WIDGET_H

QTimer/widget.cpp

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

#define TIMEOUT 1*1000

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    timer = new QTimer;  //创建一个定时器对象,构造函数中进行初始化
    picID = 2;  //第一张照片的照片ID

    QImage img;  //创建一个QImage对象
    img.load("D:\\QT\\Qtproject\\QtOnline\\picture_test\\8.jpg");  //对象加载图片,传图片路径
    ui->label->setPixmap(QPixmap::fromImage(img));  //显示在标签label上面,另一种显示图片的办法。setPixmap(img)这种用法不支持

    //定时器时间到,发出timeout信号
    connect(timer,&QTimer::timeout,this,&Widget::timeoutSlot);
}

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


void Widget::on_startBt_clicked()
{
    timer->start(TIMEOUT);
}
void Widget::timeoutSlot()
{
    QString path("D:\\QT\\Qtproject\\QtOnline\\picture_test\\");
    path += QString::number(picID);  //number将整型变成字符串变量
    path += ".jpg";

    QImage img;
    img.load(path);
    ui->label->setPixmap(QPixmap::fromImage(img));

    picID++;
    if (picID == 7)
    {
        picID = 1;
    }

}

void Widget::on_stopBt_clicked()
{
    timer->stop();  //更贴近暂停功能
}

/*
QTimer 定时器一旦启动,一直工作;
定时器只工作一次,QTimer有个静态成员函数

*/

void Widget::on_singleBt_clicked()
{
    QTimer::singleShot(1000,this,SLOT(timeoutSlot()));  //三个参数,计多长时间(毫秒),时间到了谁来处理(接收者),槽函数接收
    //singleShot可以在帮助手册中搜到
}
//p8 还未开始

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值