QTimer如何重新计数

yinyikougudu 2017-11-24 08:57:07
我想把定时器放入串口数据流里面,每次有新的数据来时,定时器会重新启动,长时间没有数据过来,定时器计时结束会调用槽函数。

F1timer=new QTimer;
F1timer->stop();
connect(F1timer,SIGNAL(timeout()),this,SLOT(F1timeout()));
F1timer->start(5*1000);

void QWidget::F1timeout()
{
F1->setValue(0);
//F1timer->stop();
// delete F1timer;
}


现在是当新的数据来时,定时器不会清零并重新计数。应该怎么修改?求大神帮助。
...全文
3811 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
斜阳日落 2020-03-18
  • 打赏
  • 举报
回复
加个在有数据过来的时候,重新start
开心大爆炸 2020-03-05
  • 打赏
  • 举报
回复


引用 6 楼 feiyangqingyun 的回复:
先stop,再start就可以了!顺便问下,你的需求是什么?感觉你这样的处理很不合理!



解决了我的一个问题,谢谢。不关闭的话,计时器总是出现问题。
萧洛 2020-03-05
  • 打赏
  • 举报
回复 1
看助手:
void QTimer::start(std::chrono::milliseconds msec)
This is an overloaded function.
Starts or restarts the timer with a timeout of duration msec milliseconds.
If the timer is already running, it will be stopped and restarted.
If singleShot is true, the timer will be activated only once.

调用start就可以了,“If the timer is already running, it will be stopped and restarted.”这句看到了吗?
如果还有问题,可能是你其它地方有问题
雲天之巔 2017-11-27
  • 打赏
  • 举报
回复
引用 6 楼 feiyangqingyun 的回复:
先stop,再start就可以了!顺便问下,你的需求是什么?感觉你这样的处理很不合理!
是的 先stop掉 然后再start就可以了 我一般也是这样做
feiyangqingyun 2017-11-25
  • 打赏
  • 举报
回复
先stop,再start就可以了!顺便问下,你的需求是什么?感觉你这样的处理很不合理!
习惯就好zz 2017-11-25
  • 打赏
  • 举报
回复
引用 2 楼 qq_23858157 的回复:
可以说详细一点吗?我试过了,不行。比如我现在设置的start值为5秒,如果1秒后有新的数据来,我希望QTimer可以重新开始计时,即重新开始5秒倒计时。
定时器不是5秒触发一次吗?你1秒来的时候计时器都没有触发呢。。。。 那你需要一个新的函数来处理计时器的问题吧? 换一种思路:如果定义计时器为1秒触发一次,那么如果在计时处理函数中设置一个全局计数Int cout。 cout到5的时候,判断一下是否有过数据接收。

int count =0;

void QWidget::F1timeout()
{
    count++;
    if(count==4)
                 //处理点什么
    F1->setValue(0);
}
mailyinjie 2017-11-25
  • 打赏
  • 举报
回复
漏了一点,在计时器运行时,记得设置 全局Int++ ,保持增长
mailyinjie 2017-11-25
  • 打赏
  • 举报
回复
用一个全局Int变量,整除5(周期),余数为0时,运行处理函数。如果检测到新数据,全局Int = 0
习惯就好zz 2017-11-24
  • 打赏
  • 举报
回复
再次调用start就行了
yinyikougudu 2017-11-24
  • 打赏
  • 举报
回复
可以说详细一点吗?我试过了,不行。比如我现在设置的start值为5秒,如果1秒后有新的数据来,我希望QTimer可以重新开始计时,即重新开始5秒倒计时。

16,215

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧