【发布时间】:2017-05-31 07:18:34
【问题描述】:
我正在使用 Qt Creator 制作计时器/秒表。但是,我的重置功能(单击重置按钮)没有按我的意愿工作。我希望它停止计时器并将显示 (QLCDNumber) 设置为 0。相反,计时器已停止,但显示数字与单击暂停按钮时保持相同。除了再次启动计时器(单击启动按钮)时,它会从原始时间重新启动(正如我想要的那样)。这是代码。
我只包括了问题的一部分。
void MainWindow::delay()
{
QTime dieTime = QTime::currentTime().addSecs(1);
while (QTime::currentTime() < dieTime && !spause && !sreset)
{
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
}
void MainWindow::on_tstart_clicked()
{
ttime = treset ? 0 : ttime;
tpause = treset = false;
ttime = ttime == 0 ? (ui->hr->value() * 3600 + ui->min->value() * 60 + ui->sec->value()) : ttime;
while (ttime >= 0 && !tpause && !treset)
{
const unsigned short sec = ttime % 3600 % 60, min = ttime % 3600 / 60, hr = ttime / 3600;
ui->tsec2->display(sec % 10);
ui->tsec1->display(sec / 10);
ui->tmin2->display(min % 10);
ui->tmin1->display(min / 10);
ui->thr2->display(hr % 10);
ui->thr1->display(hr / 10);
delay();
if (!tpause && !treset) --ttime;
}
}
void MainWindow::on_tpause_clicked()
{
tpause = true;
}
void MainWindow::on_treset_clicked()
{
treset = true;
ui->ssec2->display(0);
ui->ssec1->display(0);
ui->smin2->display(0);
ui->smin1->display(0);
ui->shr2->display(0);
ui->shr1->display(0);
}
【问题讨论】:
-
发帖的专业提示:(a)我们这里的标题中不使用[已解决]; (b) 在下面发布解决方案,而不是作为编辑; (c) 如果您解决了最初的问题但有新问题,则不要修改问题,除非更改非常小并且您还没有任何答案。
-
另外,我看到您在解决问题时编辑了一些代码。如果那是问题,那么请撤消它,以便您的问题是问题的准确表示。这个网站没有必要毫无疑问地保持答案。
-
@halfer 对不起!照你说的做。
标签: c++ qt timer qtimer qlcdnumber