BeagleBoard x15 показывает только последний номер счетчика? Qt

Я использую 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.

Можете ли вы сказать мне, что случилось? Спасибо.

0

Решение

Проблема возникает из-за того, что приложение 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);
0

Другие решения

Других решений пока нет …