我创建了一个启动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;
}
答案 0 :(得分:0)
要让计时器在触发时停止,您可以将逻辑添加到插槽中,这就是我要做的,插槽将是:
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,它将最后一次触发。但是,不是将b增加1,而是无限期地停止计时器。