有两种方法实现定时器。
第一种:
1.新建GUI工程,工程名可以设置为timer。并在主界面上添加一个标签,并设置其内容为”0000-00-00 00:00:00 星期日“。
2.在mainwindow.h中添加槽函数声明。
1 | private slots: |
3.在mainwindow.cpp中添加代码。
添加#include <QtCore>
的头文件包含,这样就包含了QtCore下的所有文件。
构造函数里添加代码:
1 | QTimer *timer = new QTimer(this); //新建定时器 |
4.然后实现更新函数。
1 | voidMainWindow::timerUpDate() |
5.运行程序,效果如图:
第二种:使用事件(有点像单片机中的定时器)
1.新建工程。在窗口中添加标签。
2.在main.cpp中添加代码,实现中文显示。
1 |
|
3.在mainwindow.h中添加代码。
1 | void timeEvent(QTimerEvent *); |
4.在mainwindow.cpp中添加代码
添加头文件 #include <QtCore>
在构造函数里添加以下代码。
1 | startTimer(1000);//其返回值为1,即其timerId为1 |
添加了三个定时器,它们的timerId分别为1,2,3,。注意第几个定时器的返回值就是几。所以要注意定时器顺序。
在下面添加函数实现。
1 | voidMainWindow::timerEvent(QTimerEvent *t)//定时器时间 |
这里添加了三个定时器,并都在定时器时间中判断他们,然后执行相应的功能,这样就不用每个定时器都写一个关联函数和槽函数
随机数的实现:
上面程序中qrand()
,可以产生随机数,qrand()%10
可以产生0~9之间的随机数。要想产生100以内的随机数就得%100,以此类推
但这样每次启动程序后,都按同一种顺序产生随机数,为了实现每次启动程序产生不同的初始值,我们可以使用qsrand(time(0))
;实现设置随机数的初始值
而程序每次启动时time(0)
返回的值都不同,这样就实现了产生不同初始值的功能。
我们将qsrand(time(0));
一句加入到构造函数里。