Я использую QProgressDialog
чтобы показать прогресс моего initializeGL()
функция, но небольшое окно отображается неокрашенным … Вот упрощенный код:
QProgressDialog barTest("Wait","Ok", 0, 100, this);
barTest.move(400,400);
barTest.show();
for(int i = 0; i < 100; i++)
{
barTest.setValue(i);
qDebug() << i;
}
я бегу Mac OS 10.8
Проблема в том, что событие рисования для окна застревает в цикле событий Qt, пока вы выполняете код (например, for
петля).
Если вы хотите, чтобы события рисования обрабатывались, вы можете использовать QApplication :: processEvents:
for(int i = 0; i < 100; i++)
{
barTest.setValue(i);
qDebug() << i;
// handle repaints (but also any other event in the queue)
QApplication::processEvents();
}
В зависимости от скорости цикла вы можете найти достаточным обновление только каждые 10%, например:
for(int i = 0; i < 100; i++)
{
barTest.setValue(i);
qDebug() << i;
// handle repaints (but also any other event in the queue)
if(i % 10 == 0) QApplication::processEvents();
}
Других решений пока нет …