视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
qt中定时器Timer的使用
2025-10-04 04:05:26 责编:小OO
文档
qt中定时器Timer的使用

有两种方法实现定时器。

第一种。自己建立关联。

1.新建Gui工程,工程名可以设置为timer。并在主界面上添加一个标签label,并设置其显示内容为“0000-00-00 00:00:00 星期日”。

2.在mainwindow.h中添加槽函数声明。

private slots:

void timerUpDate();

3.在mainwindow.cpp中添加代码。

添加#include 的头文件包含,这样就包含了QtCore下的所有文件。

构造函数里添加代码:

QTimer *timer = new QTimer(this);

//新建定时器

connect(timer,SIGNAL(timeout()),this,SLOT(timerUpDate()));

//关联定时器计满信号和相应的槽函数

timer->start(1000);

//定时器开始计时,其中1000表示1000ms即1秒

4.然后实现更新函数。

void MainWindow::timerUpDate()

{

QDateTime time = QDateTime::currentDateTime();

//获取系统现在的时间

QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd");

//设置系统时间显示格式

ui->label->setText(str);

//在标签上显示时间

}

5.运行程序,效果如下。

第二种。使用事件。(有点像单片机中的定时器啊)

1.新建工程。在窗口上添加两个标签。

2.在main.cpp中添加代码,实现中文显示。

#include

QTextCodec::setCodecForTr(QTextCodec::codecForLocale());

3.在mainwindow.h中添加代码。

void timerEvent(QTimerEvent *);

4.在mainwindow.cpp中添加代码。

添加头文件#include

在构造函数里添加以下代码。

startTimer(1000); //其返回值为1,即其timerId为1

startTimer(5000);//其返回值为2,即其timerId为2

startTimer(10000); //其返回值为3,即其timerId为3

添加了三个定时器,它们的timerId分别为1,2,3。注意,第几个定时器的返回值就为几。所以要注意定时器顺序。

在下面添加函数实现。

void MainWindow::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));一句加入构造函数里。下载本文

显示全文
专题