Я использую BeagleBoard x15, чтобы показать счетчик. Когда я нажимаю кнопку, она запускает цикл:
for(int i=0;i<10;i++){
ui->label->setText(QString::number(i));
delay(1s);
}
Но он показал только последний номер: «9» на этикетке. Он должен показывать: 1, 2, 3, 4, 5, … 9 через каждые 1 с. Я использую Qt.
Можете ли вы сказать мне, что случилось? Спасибо.
Проблема возникает из-за того, что приложение Qt живет в цикле, который блокирует ваша задержка, правильно использовать QTimer
:
ui->label->setText("0");
QTimer *timer(this);
connect(timer, &QTimer::timeout, [timer, this](){
int i = ui->label->text().toInt();
ui->label->setText(QString::number(i+1));
if(i == 9)
timer->stop();
});
timer->start(1000);
Других решений пока нет …