3、QT的使用——QObject和QTimer定时器
创始人
2024-06-02 12:44:01

目录

一、QObject定时器

1、固定的函数

2、实现的功能

3、在头文件中

4、开启定时器

5、定时器事件(循环显示图片)

6、定时器停止

7、初始化时,显示第一张图片

8、图片相适应

9、最终结果

 三、QTimer定时器

1、widget.h文件

2、创建定时器对象,定时器时间到,发出timeout信号

3、定时器事件(循环显示图片)

4、定时器结束

5、单次启动定时器(点一次,切换一次图片)


一、QObject定时器

1、固定的函数

开启定时器:startTimer   

结束定时器:killTimer

2、实现的功能

每隔一秒切换一个图片,有暂停的功能

3、在头文件中

#define TIMEOUT    1 * 1000 //1秒钟public:virtual void timerEvent(QTimerEvent *event);//event获取编号private:int myTimerId;//定时器的编号int picID;//图片的编号

时间到了就触发timerEvent,这个函数原本就有的,而且是虚函数,只是继承过来  

4、开启定时器

void Widget::on_startButton_clicked()
{//开启定时器,返回定时器编号myTimerId = this->startTimer(TIMEOUT);
}

5、定时器事件(循环显示图片)

void Widget::timerEvent(QTimerEvent *event)
{if (event->timerId() != myTimerId)//判断是哪个定时器return;QString path("C:\\Users\\simple\\Desktop\\qt_code\\objectTimer\\");path += QString::number(picID);path += ".jpg";QPixmap pix(path);ui->label->setPixmap(pix);picID++;if (4 == picID)picID = 1;
}

6、定时器停止

void Widget::on_stopButton_clicked()
{this->killTimer(myTimerId);
}

7、初始化时,显示第一张图片

Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);picID = 2;QPixmap pix("C:\\Users\\simple\\Desktop\\qt_code\\objectTimer\\1.jpg");ui->label->setPixmap(pix);
}

8、图片相适应

 9、最终结果

 三、QTimer定时器

1、widget.h文件

#include 
#define TIMEOUT    1 * 1000private slots:void on_startButton_clicked();void timeoutSlot();void on_stopButton_clicked();void on_singleButton_clicked();private:Ui::Widget *ui;QTimer *timer;int picID;

2、创建定时器对象,定时器时间到,发出timeout信号

widget.cpp:在构造函数中

    timer = new QTimer;//创建定时器对象picID = 2;QImage img;img.load("C:\\Users\\simple\\Desktop\\qt_code\\QTimer\\1.jpg");ui->label->setPixmap(QPixmap::fromImage(img));//定时器时间到,发出timeout信号connect(timer, &QTimer::timeout, this, &Widget::timeoutSlot);

3、定时器事件(循环显示图片)

void Widget::timeoutSlot()
{QString path("C:\\Users\\simple\\Desktop\\qt_code\\QTimer\\");path += QString::number(picID);path += ".jpg";QImage img;img.load(path);ui->label->setPixmap(QPixmap::fromImage(img));picID++;if (4 == picID)picID = 1;
}

4、定时器结束

void Widget::on_stopButton_clicked()
{timer->stop();
}

5、单次启动定时器(点一次,切换一次图片)

void Widget::on_singleButton_clicked()
{QTimer::singleShot(1000, this, SLOT(timeoutSlot()));
}

Qtimer的好处;可以一直1s启动一次,也可以单次启动

相关内容

热门资讯

尚纬股份跌0.45%,成交额2... 1月12日,尚纬股份跌0.45%,成交额2.68亿元,换手率4.88%,总市值55.19亿元。异动分...
光洋股份涨2.01%,成交额3... 1月12日,光洋股份涨2.01%,成交额3.52亿元,换手率5.04%,总市值77.18亿元。异动分...
恒华科技涨2.97%,成交额1... 1月12日,恒华科技涨2.97%,成交额1.92亿元,换手率5.47%,总市值41.57亿元。异动分...
鲍斯股份涨0.38%,成交额1... 1月12日,鲍斯股份涨0.38%,成交额1.30亿元,换手率2.66%,总市值50.52亿元。异动分...
江化微涨停,成交额10.02亿... 1月12日,江化微涨停,成交额10.02亿元,换手率12.40%,总市值82.60亿元。异动分析光刻...