Qt中如何停止定时器timer?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt中如何停止定时器timer?相关的知识,希望对你有一定的参考价值。

我是在构造函数中建立的:
m_timerId=startTimer(100);
我如何在想停下它的时候停下它,想重新打开的时候打开它!谢谢
(我试过:m_timerId->stop(),不过不行!)

timer.interval=0.。。设置时钟1的周期事件为0就可以停止定时器了 参考技术A killTimer(m_timeId);追问

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实现一个异步定时器

c# - 如何立即停止计时器

Qt5 自定义线程下使用定时器

java 定时器中任务的启动停止再启动

jQuery Timer:启动/停止/恢复/删除任何HTML元素中的漂亮计时器。

如何在 ElapsedEvent 期间保持 System.Timers.Timer 停止