Qt Creatorでタイマー/ストップウォッチを作っています。しかし、私のリセット機能(リセットボタンをクリック)は、私が望むように機能していません。私はそれがタイマーを停止し、表示(QLCDNumber)を0に設定したいと思います。代わりに、タイマーは停止していますが、ポーズボタンがクリックされた場合と同じ表示数になります。タイマーが開始されたとき(開始ボタンがクリックされたとき)を除いて、それは元の時間から(私がしたいように)再開します。ここにコードがあります。Qt QLCDNumberの問題
私は問題の一部である部分のみを含んでいました。
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
また、あなたが解決したときにあなたの質問にいくつかのコードを編集しました。それが問題だった場合は、元に戻して問題が正確に表現されるようにしてください。このサイトには何の疑問もなく回答を維持することはできません。 – halfer
@halfer申し訳ありません!あなたが言うようにします。 – cppxor2arr