QT定时器使用的实例
来源:互联网 发布:狄俄尼索斯知乎 编辑:程序博客网 时间:2024/06/06 19:31
http://blog.csdn.net/feiyangyangfei/article/details/8662365
有两种方法实现定时器。
第一种:
1.新建GUI工程,工程名可以设置为timer。并在主界面上添加一个标签,并设置其内容为”0000-00-00 00:00:00 星期日“。
2.在mainwindow.h中添加槽函数声明。
private slots:
void timerUpDate();
3.在mainwindow.cpp中添加代码。
添加#include <QtCore>的头文件包含,这样就包含了QtCore下的所有文件。
构造函数里添加代码:
QTimer *timer = new QTimer(this);
//新建定时器
connect(timer,SIGNAL(timerout()),this,SLOT(timeUpDate()));
//关联定时器计满信号和相应的槽函数。
timer->start(1000);
//定时器开始计时,其中1000表示1000ms即1s,每1000ms就会触发一次槽函数。
4.然后实现更新函数。
voidMainWindow::timerUpDate()
{
QDateTime time = QDateTime::currentDateTime();//获取系统现在的时间
QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd");//设置系统时间显示格式
ui->label->setText(str);//在标签上显示时间
}
第二种:使用事件(有点像单片机中的定时器)
1.新建工程。在窗口中添加标签。
2.在main.cpp中添加代码,实现中文显示。
#include <QTextCodec>
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
3.在mainwindow.h中添加代码。
void timeEvent(QTimerEvent *);
4.在mainwindow.cpp中添加代码
添加头文件#cinclude <QtCore>
在构造函数里添加以下代码。
startTimer(1000);//其返回值为1,即其timerId为1
startTimer(5000);//其返回值为2,即其timerId为2
startTimer(10000);//其返回值为3,即其timerId为3
添加了三个定时器,它们的timerId分别为1,2,3,。注意第几个定时器的返回值就是几。所以要注意定时器顺序。
在下面添加函数实现。
voidMainWindow::timerEvent(QTimerEvent *t)//定时器时间
{
switch(t->timerId());//判断定时器的句柄
{
case 1:ui->label->setText(tr("每秒产生一个随机数:%1").arg(qrand()%10));break;
case 2:ui->label_2->setText(tr("5秒后软件将关闭"));break;
case 3:qApp->quit();break;//退出系统
}
}
这里添加了三个定时器,并都在定时器时间中判断他们,然后执行相应的功能,这样就不用每个定时器都写一个关联函数和槽函数
随机数的实现:
上面程序中qrand(),可以产生随机数,qrand()%10可以产生0~9之间的随机数。要想产生100以内的随机数就得%100,以此类推
但这样每次启动程序后,都按同一种顺序产生随机数,为了实现每次启动程序产生不同的初始值,我们可以使用qsrand(time(0));实现设置随机数的初始值
,而程序每次启动时time(0)返回的值都不同,这样就实现了产生不同初始值的功能。
我们将qsrand(time(0));一句加入到构造函数里。
- QT定时器使用的实例
- QT定时器使用的实例
- QT定时器使用的实例
- QT定时器使用的实例
- QT 定时器的使用
- Qt定时器的使用
- Qt定时器的使用
- Qt 定时器的使用
- Qt中的定时器的使用
- qt中定时器的使用
- QT中定时器的使用
- qt中定时器的使用
- Qt中定时器的使用
- Qt下定时器的使用
- QT定时器的实现 ,多种定时器的使用
- qt中定时器Timer的使用
- qt中定时器Timer的使用
- qt中定时器Timer的使用
- 题目1167:数组排序
- java中volatile关键字的含义
- 2017-1期
- 数字货币备份教程
- 逐行扫描和隔行扫描的区别,原理
- QT定时器使用的实例
- Java泛型详解
- 10进制,16进制的atoi
- 算法训练 接水问题
- java发送http的两种请求方式——get、post
- Java简单验证码原理(源代码+步骤操作)
- iOS 获取日志框架CocoaLumberjack
- 你的串口程序在虚拟串口上正常通信,物理串口却接收不到返回
- IntelliJ IDEA 使用Subversion 配置Ignored Files无效