Я новичок в QT. Я понимаю, что вы можете заставить обновить дисплей, но я вытащил все мои волосы, пытаясь понять, как это сделать. Вот что я конкретно пытаюсь сделать.
Я нажимаю кнопку (событие сигнала onClick), которая запускает код, который меняет изображение (QLabel) на дисплее, ждет ввода, а затем переходит путем изменения нового изображения (другое QLabel). Я пробовал все, и дисплей не обновляется до тех пор, пока код события сигнала onclick не будет завершен. Прямо сейчас, я не жду ввода пользователя, я использую usleep (~ 500 мс) для целей тестирования.
Из того, что я читал, QT является событием, означающим, что я в основном создаю кучу событий, которые попадают в очередь и выполняются, когда (событие сигнала onClick) возвращается в (основной цикл)/(событие обработчик). Я не хочу ждать, пока функция будет завершена, это сделает программирование очень болезненным, если я должен выполнить эту процедуру полностью на основе событий.
Как я могу принудительно обновить pixmap QLabel. Я все пробовал. Ниже приведен код, который я пробовал в моем обработчике событий onClick. (upButton - это имя QLabel, которое является pixmap)
update();
repaint();
ui->upButton->setUpdatesEnabled(TRUE);
update();
repaint();
QPaintEvent paintevent(ui->upButton->childrenRegion());
QPaintEvent * test = &paintevent;
paintEvent(test);
this->changeEvent(test);
ui->upButton->update();
ui->upButton->repaint();
ui->upButton->repaint(ui->upButton->childrenRegion());
repaint();
QApplication::sendPostedEvents();
this->parentWidget()->update();
usleep(100000);
Как вы можете видеть, я просто снимаю в темноте в этот момент. Я попытался посмотреть пример кода и сделать все домашнее задание, но я потерян. Оцените любую помощь, совет и/или образец кода.