QProgressDialog не рисует во время initializeGL

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

2

Решение

Проблема в том, что событие рисования для окна застревает в цикле событий 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();
}
1

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

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

По вопросам рекламы [email protected]