Я пытаюсь нарисовать картинку на экран несколько раз изнутри бесконечной l oop. Когда я пытаюсь нарисовать изображение в QGraphicsView, оно не обновляется, пока я не откажусь от l oop. Вот моя функция с бесконечным l oop:
void MainWindow::displayNoise() {
QImage noise(WIDTH, HEIGHT, QImage::Format_RGB32);
float t = 0;
while (true) {
// Populate noise
rendered_image = noise;
DisplayQImage(rendered_image);
t += 0.200;
std::this_thread::sleep_for(std::chrono::milliseconds(200));
}
}
А вот DisplayQImage()
:
void MainWindow::DisplayQImage(QImage &i)
{
QPixmap pixmap(QPixmap::fromImage(i));
graphics_scene.addPixmap(pixmap);
graphics_scene.setSceneRect(pixmap.rect());
ui->scene_display->setScene(&graphics_scene);
}
Обратите внимание, что graphics_scene
и rendered_image
являются членами MainWindow
. Если после моего вызова DisplayQImage
я вставляю оператор break, то рендерится первый кадр, но если я не выйду из функции displayNoise
, виджет не обновится. Я настроил сигнал так, чтобы при нажатии N
он вызывал displayNoise
, и я знаю, что l oop зацикливается. Почему картинка не отображается?