在上一篇文章中,我们介绍了键盘和鼠标事件。其实有一个很常见的事件,就是定时器事件。如果你想控制程序的时间,你应该使用定时器。而随机数也是一个很常见的函数。当我们想要产生一个随机的结果时,我们应该使用随机数。下面我们简单介绍一下本文中的定时器和随机数。
环境:Windows 7 Qt 4.8.1 Qt Creator 2.4.1
一、定时器
Qt中定时器的使用方式有两种,一种是定时器事件,另一种是使用信号和槽。一般使用多个定时器时,最好使用定时器事件来处理。
1.新建一个Qt Gui应用,项目名为myTimer,基类为QWidget,类名为Widget。
2.将函数声明添加到widget.h文件中:
受保护:
void time revent(QTimerEvent *);
然后添加一个私有变量定义:
int id1,id2,id3
3.进入设计模式,将两个标签部件Label拖入界面。
4.接下来,进入widget.cpp文件,首先在构造函数中添加以下代码:
id1=startTimer(1000);//启动1秒计时器并返回其ID
id2=start timer(2000);
ID3=start timer(10000);
这里启动了三个定时器,分别返回它们的id。该ID用于区分不同的定时器。计时器的时间单位是毫秒。每当定时器溢出时,都会调用定时器事件处理函数,我们可以在这个函数中进行相应的处理。
5.在下面添加计时器事件处理程序的定义:
void小部件:time revent(QTimerEvent *事件)
{
If (event-timerId()==id1) {//确定是哪个定时器
ui-label-setText(tr(%1 )。arg(qrand()));
}
else if (event-timerId()==id2) {
ui-label _ 2-setText(tr( hello world!));
}
否则{
qApp-quit();
}
}
这里使用timerId()函数返回溢出定时器的Id,然后根据id确定哪个定时器溢出,并进行相应的处理。每当第一定时器溢出时,产生小于10的随机数;当第二定时器溢出时,标签的文本被改变;当第三个定时器溢出时,退出应用程序。现在你可以运行程序,看看效果。
6.如果你只是想启动少量的定时器,你也可以使用信号和槽。
首先在widget.h中添加一个私有插槽声明:
专用插槽:
void timer update();
然后在设计模式下将行编辑器组件Line Edit添加到界面中,然后将头文件添加到widget.cpp中以包括:
#包含QTimer
#包含QDateTime
然后在构造函数中添加以下代码:
q timer * timer=new q timer(this);
//关联定时器溢出信号和对应的槽函数。
connect(timer,SIGNAL(timeout()),this,SLOT(timer update());
计时器启动(1000);
这里,创建了一个定时器,它的溢出信号与更新槽相关联。最后,start()函数用于启动计时器。
在下面添加timerUpdate()函数的定义:
void小部件:timerUpdate()
{
//获取系统的当前时间
QDateTime time=QDateTime:current datetime();
//设置系统时间显示格式
QString str=time . tostring( yyyy-MM-DD hh:MM:ss dddd );
//在标签上显示时间
ui-line edit-setText(str);
}
当前时间显示在行编辑器中。现在你可以运行程序,看看效果。
二、随机数
关于随机数,Qt中使用了qrand()和qsrand()函数。在前面的程序中,我们已经看到了qrand()函数的使用,它可以生成随机数。QR和()可以生成0到9之间的随机数。生成100以内的随机数是0。诸如此类。
在使用qrand()函数生成随机数之前,一般需要使用qsrand()函数设置初始值。如果不设置初始值,qrand()会在每次运行程序时生成相同的一组随机数。为了在每次运行程序时生成不同的随机数,我们需要使用qsrand()来设置不同的初始值。这里使用了QTime类的secsTo()函数,它表示两个时间点之间的秒数。例如,在代码中,它是指从零到当前时间的秒数。
首先,将以下代码添加到widget.cpp的构造函数中:
qsrand(QTime(0,0,0)。secsTo(q time:current time());
然后在timerUpdate()函数的末尾添加以下代码:
int rand=qrand()% 300;//生成300以内的正整数
ui-lineEdit-move(rand,rand);
这样,每一秒钟,行编辑器都会移动到一个随机的位置。你可以运行程序,检查效果。
以上是本文的全部内容。我希望你能喜欢它。