QTimer *timer = new QTimer()
connect(timer, SIGNAL(timeout()), this, SLOT(timeout())
progressBar->setMaximum(100)
// 写槽函数
void MainWindow::timeout() {
static int nVal = 0
progressBar->setValue(nVal++)
}
// 再然后启动定时器即可
timer->start(1000)// 每秒触发一次
用QTimer或者QBasicTimerQTimer主要就是为计时而设计,QTimer类使用起来也很简单。举个小例子
假设构造函数有如下代码
QTimer* timer = new QTimer(this)
timer->setInterval(1000)//1000ms == 1s
connect(timer,SIGNAL(timeout()),this,SLOT(display()))
对应的槽函数display定义如下
void MainWindow::display()
{
static int count = 0
//增加时间计数
count++
//显示当前的时间计数
label->setText(QString::number(count))
}
上面的代码就已经完成了你的要求。每间隔1秒,count就会加1,也就是说label上显示的数字为当前程序运行了多少秒。
QBasicTimer属于轻量级的计时类,它不继承自QObject,所以它不能给你提供信号和槽。
QBasicTimer的用法如下:
假设你头文件有如下定义
protected:
void timerEvent(QTimerEvent *)
private:
QBasicTimer timer
构造函数有如下调用
timer.start(1000,this)
最后重新实现的timerEvent函数如下
void MainWindow::timerEvent(QTimerEvent *event)
{
static int count = 0
if (event->timerId() == timer.timerId()) {
//增加时间计数
count++
//显示当前的时间计数
label->setText(QString::number(count))
} else {
QWidget::timerEvent(event)
}
}
上面两种方式都可以实现你的要求,相比之下QBasicTimer更适合在嵌入式设备上进行使用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)