我正在使用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
答案 0 :(得分:1)
问题在于,只要您执行代码(例如for
循环),窗口的绘制事件就会卡在Qt的事件循环中。
如果您希望处理绘画事件,可以使用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();
}