我创建了一个启动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,它将在最后一次触发。但是,它不会无限地停止计时器。