Это метод, который я называю с помощью кнопки мышиПочему не обновляется метка Qt?
void ChangeLabelText(QLabel* myLabel)
{
int countNumber = 0;
for(int i = 0; i < 9999; i++)//outer loop
{
for(int k = 0; k < 65000; k++)//inner loop
{
countNumber++;
}
myLabel->setText(QString::number(countNumber));
}
}
Когда код работает текст метки устанавливается в конце outer loop
, но я ожидал, что это набор текста лейбла каждый раз, когда inner loop
заканчивается. Что может быть причиной этого?
Ваш код, выполняемый в основном потоке и в основном потоке, обновление UI происходит при обратных вызовах событий. То, что вам нужно, - это перекрасить ваш ui. Вы можете сделать это, вызвав 'repaint()' или попросив применение для обработки событий 'QCoreApplication :: processEvents()'. Вам нужно сделать это после смены ярлыка. – johngull
Текст устанавливается каждый раз через цикл, но метка не перерисовывается до тех пор, пока выполнение не вернется в цикл событий и событие обработки может быть обработано. Если элементы управления были перекрашены в режиме реального времени по мере изменения их свойств, вы увидите очень много мерцания. –
@ johngull Ваш ответ сработал отлично. Вы можете ввести его в качестве ответа, чтобы любители, такие как я, могли видеть ответ. – ozgur