Qt中如何停止定时器timer?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt中如何停止定时器timer?相关的知识,希望对你有一定的参考价值。
我是在构造函数中建立的:
m_timerId=startTimer(100);
我如何在想停下它的时候停下它,想重新打开的时候打开它!谢谢
(我试过:m_timerId->stop(),不过不行!)
Kill?那如果再次启动,是不是不能了?
追答再次启动就重新调用startTimer()啊
本回答被提问者采纳 参考技术B 1.新建Gui工程,在主界面上添加一个标签label,并设置其显示内容为“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(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.运行程序。
======================================================
以下是本人自己整理的代码:
mainwindow.h
#include <QMessageBox>
#include <QtCore>
#include <time.h>
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
ui->setupUi(this);
#if 0
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(timerUpDate()));
timer->start(1000);
#else
qsrand(time(0));
startTimer(1000); // 返回值为1, 即timerId
startTimer(5000); // 返回值为2
startTimer(10000); // 返回值为3
#endif
MainWindow::~MainWindow()
delete ui;
void MainWindow::on_btnLogin_clicked()
QMessageBox::information(this, "Caption", tr("Hello你好吗"), QMessageBox::Ok);
#if 0
void MainWindow::timerUpDate()
QDateTime time = QDateTime::currentDateTime();
QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd");
ui->lblCurDate->setText(str);
#else
void MainWindow::timerEvent(QTimerEvent *t)
switch(t->timerId())
case 1:
QDateTime time = QDateTime::currentDateTime();
QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd");
ui->lblCurDate->setText(str);
ui->lbl1->setText(tr("每秒产生一个随机数: %1").arg(qrand() % 10));
ui->lbl1->adjustSize();
break;
case 2:
ui->lbl2->setText(tr("5秒后软件将关闭"));
ui->lbl2->adjustSize();
break;
case 3:
qApp->quit(); // 退出系统
break;
#endif
main.cpp
#include <QtGui/QApplication>
#include <QTextCodec>
#include "mainwindow.h"
int main(int argc, char *argv[])
QApplication a(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
MainWindow w;
w.show();
return a.exec();
以上是关于Qt中如何停止定时器timer?的主要内容,如果未能解决你的问题,请参考以下文章
使用boost的deadline_timer实现一个异步定时器