2 u013275296 u013275296 于 2016.04.20 13:11 提问

qt怎么判断定时器是否工作
qt

connect(&delayTimer,SIGNAL(timeout()),this,SLOT(showlcdNumber()));比如我在构造喊中写入connect,然后在代码中开启定时器,现在的问题是没有进入槽函数,我怎么判断这个定时器还在工作

6个回答

qq423399099
qq423399099   Ds   Rxr 2016.04.20 13:17
已采纳

可以调用QTimer类的isActive()方法
返回TRUE说明定时在工作,返回FALSE说明没有

u013275296
u013275296 回复小灸舞: 能帮忙看下吗,我回复中贴的说超过500字了,我再下面给你贴了
大约 2 年之前 回复
qq423399099
qq423399099 回复超级小菜: 楼主贴一下代码吧
大约 2 年之前 回复
u013275296
u013275296 我这边定时器还在,但是没有进入槽函数知道是什么原因吗,我在槽函数中打印一句话不打印,但是isActive是true
大约 2 年之前 回复
qq_34688538
qq_34688538   2016.04.20 13:20

The best thing

u013275296
u013275296   2016.04.20 15:30

我在mainwindow的构造函数里写的connect是这样的connect(&delayTimer,SIGNAL(timeout()),this,SLOT(showlcdNumber()));
我在别的函数中写了开启定时器
//IO延时槽函数
void MainWindow::on_signal_delay(double num,int type)
{

delay_type = type;
delaynum = num;
ui->delay_lcdNumber->display(delaynum);
if(type == 1)
{
    if(delayTimer.isActive())
        delayTimer.stop();
    delayTimer.start(1000);
    qDebug()<<"comgingjin delay type"<<delay_type<<endl;
    if(delayTimer.isActive())
        qDebug()<<"delayTimer is active"<<delaynum<<endl;
    ui->stop_delay->setDisabled(false);
}
else if(type == 2)
{
    if(conprocess_delayTimer.isActive())
        conprocess_delayTimer.stop();
    conprocess_delayTimer.start(1000);
    qDebug()<<"comgingjin conprocessdelay type"<<delay_type<<endl;
    ui->stop_delay->setDisabled(false);
}

}
我的槽函数前面加了打印信息
void MainWindow::showlcdNumber()
{
qDebug()<<"showlcdNumber lcdnum= "<<delaynum<<endl;
if(delayTimer.isActive())
qDebug()<<"delyaTimerisliving"<<delaynum<<endl;
else
qDebug()<<"delyaTimerisnotliving"<<delaynum<<endl;
.....
}
代码运行结果是这样的
comgingjin delay type 1

delayTimer is active 2
没有进入我的槽函数,我现在的问题就是我怎么知道这个connect还工作着

u013275296
u013275296 回复小灸舞: 谢谢,问题解决了,不是这边的问题
大约 2 年之前 回复
qq423399099
qq423399099 照理是没错的,要么再贴一下头文件和构造函数
大约 2 年之前 回复
caoshangpa
caoshangpa   2016.04.23 11:30

timer.isActive()

u013782830
u013782830   2016.05.11 17:09

调用isActive()方法啊,返回一个真假值

u011012932
u011012932   Rxr 2016.08.10 18:50

isActive()
更多参考:Qt之QTimer

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
VC中判断定时器是否已经开启的办法
VC中定时器的用法比较简单,无非是sangeha
MFC中两种定时器
在MFC中有两种定时器:     一、自定义回调函数的定时器,如设置定时器函数原型:     UINT_PTR SetTimer(     HWND hWnd, // 窗口句柄     UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器     UINT uElapse, // 时间间隔,单位为毫秒     TIMERPROC lpTi
QT定时器的一些注意
1 QTimer必须在有事件循环的线程中运行。如果没有事件循环。那么不会得到timeout的信号。  因为QTimer底层实质上就是基于事件机制的 2 在UI线程里面的QTimer  timeout连接的信号中执行Sleep或者while等操作会阻塞UI,这个是肯定的。如果使用QDialog带有exec的操作呢? 带有exec的操作是可以继续QT UI的。因为exec实际上就
Qt中定时器使用的两种方法
Qt中定时器的使用有两种方法,一种是使用QObject类提供的定时器,还有一种就是使用QTimer类。          其精确度一般依赖于操作系统和硬件,但一般支持20ms。下面将分别介绍两种方法来使用定时器。 方法一:QObject中的定时器的使用,需要用到三个函数 1、   int QObject::startTimer ( int interval ) ;         这个是开
定时器的声明以及判断定时器是否存在
1.用于判断js的定时器是否存在,存在则清除定时器 var imlNumberInterval,resetTimeoutInterval; //设置超时定时器 resetTimeoutInterval = setTimeout(function(){ //业务逻辑 }, 2 * 60 *1000);//每隔2 mins执行 //设置定时执行定时器 imlNumberInterval=setI
qt for android连接真机方式
qt for android连接真机方式,如何开启和关闭开发者模式,怎么判断是否连接上真机
Qt5 定时器 QTimer 的测试
目录 Content [hide] 代码实现 mainwindow.h mainwindow.cpp 运行结果 源码下载 如果需要在程序中周期性的处理事件,比如每秒种触发一次事件,那么可以使用QTimer。注意 QTimer 和 QTime 是不同的。 本文参照《Qt 定时器Timer使用》的介绍,测试代码成功。新建一个 Wi
判断俩个区间定时器是否重叠
代码备份 定时器分开始时间和结束时间,而且可以设置按周一到周日的循环,怎么判断俩个时间段有重复 public void overlapTest() { ArrayList timer = new ArrayList<>(); // 下面时间段进行俩俩比较,测试是否有重叠 // true timer.add("00 00
各种android定时器验证
android系统升级到4.4以上,由于存在一个定时器对齐执行(好像是这么个名字),造成定时器每5分钟才能执行一次,很多场景下需要定时执行的任务都必须5分钟才执行一次,典型的场景比如socket长连接的心跳,为了维持socket长连接,必须每隔固定时间由app向server端发送一个心跳包,以便让server知道该socket还是正常的,无论设置是40秒还是多少秒,心跳定时器都会被合并成5分钟执行
C#定时检查子线程是否执行完成(定时器检查)
定时器定时去检验子线程是否执行完成。如果完成关闭定时器,继续执行别的方法。 private volatile static FileReadManager uniqueInstance; private Timer _FileReadTimer = null; private Timer _PriorityFileReadTimer = null;