0%

计时器

  • QTimer 通过start(int num)函数运行,(以num为间隔)不断发出timeout信号,stop停止
  • QTimer::singleShot(1000,this,SLOT(timeoutSlot()));直接计时后运行
  • connect(对象,信号,发送到对象,调用函数),调用函数一般是自定义槽函数
  • Qimage::load(path)加载图片R(“”)忽略转义,相对路径(加.qrc文件,:加相对路径)
  • QPixmap pix(“D:\CACHE\Qt\objectTimer\pic\1.jpg”);另一种加载图片的方法*
  • Widget::startTimer()返回一个ID,killTimer()停止,不建议使用

code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "widget.h"
#include "./ui_widget.h"
#define TIMEOUT 1000
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
timer=new QTimer;
picID=2;

QImage img;
img.load(R"(D:\CACHE\Qt\Qtimer\pic\1.jpg)");
ui->label->setPixmap(QPixmap::fromImage(img));

connect(timer,&QTimer::timeout,this,&Widget::timeoutSlot);

}

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

void Widget::on_startButton_clicked()
{
timer->start(TIMEOUT);
}

void Widget::timeoutSlot()
{
QString path(R"(D:\CACHE\Qt\Qtimer\pic\)");
path+=QString::number(picID);
path+=".jpg";

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

picID++;
if(picID==5)picID=1;

}

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


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