本文章原创于www.yafeilinux.com 转载请注明出处。
有两种方法产生定时器,第一种是自己关联。而第二种就是使用事件,在这里就做下程序的笔记。
在main.cpp中添加代码实现中文:
(其他头文件都是自动生成)
#include <QTextCodec> int main(int argc, char *argv[]) { QApplication a(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); Widget w; w.show(); return a.exec(); }
在widget.h中添加代码(我用的是widget,在www.yafeilinux.com 中用的是window,应该都差不多。那个网站确实写的不错,很支持。)
下面就进入widget.cpp中了:
id1 = startTimer(1000); id2 = startTimer(5000);
id3 = startTimer(10000);
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
上面是加在构造函数中。
void Widget::timerEvent(QTimerEvent *t) { if(t->timerId() == id1) ui->label->setText(tr("每秒产生一个随机数:%1").arg(qrand()%10)); else if(t->timerId() == id2) ui->label_2->setText(tr("5秒后将关闭")); else qApp->quit(); }
这样整个就做完了。
随机数的实现:
上面程序中的qrand(),可以产生随机数,qrand()%10可以产生0-9之间的随机数。要想产生100以内的随机数就%100。以此类推。
但这样每次启动程序后,都按同一种顺序产生随机数。为了实现每次启动程序产生不同的初始值。我们可以使用qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));实现设置随机数的初值,而程序每次启动时该函数返回的值都不同,这样就实现了产生不同初始值的功能。