在插槽中停止QTIMER
Stop Qtimer in a slot
我创建了一个启动qtimer的插槽,它必须增加变量,当它达到一定值时,必须停止。这是代码:
void MainWindow::on_start_clicked() {
b = 95;
m_timer->start(1000);
if (b == 98) {
m_timer->stop();
return;
};
}
m_timer = new QTimer(this);
connect(m_timer,SIGNAL(timeout()),this,SLOT(increase()));
void MainWindow::increase() {
b += 1;
qDebug() << b;
}
触发时要保持计时器停止,您可以将逻辑添加到插槽中,这就是我要做的,插槽将是:
void MainWindow::on_start_clicked() {
b = 95;
m_timer->start(1000);
}
连接将是:
connect(m_timer, &QTimer::timeout, this, &MainWindow::increase);
*上面的连接方法是QT 5建立连接的方式,这是一个编译时间检查,如果无法连接,则会出错;因此,您无需等到运行时间进行检查。
最后,插槽将是:
void MainWindow::increase() {
if(b >= 98) {
b++;
qDebug() << b;
m_timer->start(1000);
} else {
//b has finally reached 98
m_timer->stop();
}
}
上面的代码将允许计时器继续每秒触发一次,直到B到达98,一旦达到98,它将在最后一次触发。但是,它不会无限地停止计时器。
相关文章:
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何在没有信号的情况下从C++执行QML插槽
- 从Q_INVOKABLE功能或插槽中更改QQuick图像源
- 升压信号2将插槽传递到成员功能以断开连接
- 如何在qt中将信号和插槽与另一个对象连接 --解决了
- C++ 信号和插槽不工作:插槽不响应事件
- NS3 插槽混淆(需要帮助理解)
- QObject::连接无法将信号连接到*this*对象的插槽
- QT 插槽未在主线程上调用
- 通过插槽和信号在不同线程中的两个qt对象之间进行通信
- 控制带有信号/插槽的Qt QML滑动视图
- Qt 信号/插槽问题
- QT5 信号不会激活插槽内的功能
- Qt5:连接:如果插槽的参数少于信号,如何使用"连接"
- 需要实例化不同类/对象并在启动时确定的硬件插槽的设计模式
- 在插槽中停止QTIMER
- QTIMER,参数化插槽
- 通过直接连接或排队连接调用插槽的QTimer超时插槽之间的区别
- QTimer::singleShot() 在给定对象的父类中查找指定的插槽,而不是对象本身
- QTimer 插槽未被调用