[Interest] Strange problem where exec() of dialogs returns immediately
Nikos Chantziaras
realnc at gmail.com
Sat Mar 10 16:37:30 CET 2012
I have a very strange problem, where calls to functions like
QMessageBox::question() or QMessageBox::exec() or
FileDialog::getOpenFileName() (and other cases where dialogs create
their own, local event loops) will return immediately without waiting
for the user to do any input first.
Even weirder, in the case of QMessageBox::question() and
QMessageBox::exec(), even though the call returns immediately, the
dialog is still open and responsive, waiting for the user to make a
choice. For example:
QMessageBox* msgBox = new QMessageBox(...)
msgBox.exec();
qDebug() << "After";
The above code will print "After" on stderr even though the message box
is still visible and none of the buttons have been clicked.
One unusual thing about the application in question is that it "blocks"
all the time (it has to) and moves things along with:
qApp->sendPostedEvents(0, QEvent::DeferredDelete);
qApp->sendPostedEvents();
qApp->processEvents(QEventLoop::WaitForMoreEvents
| QEventLoop::AllEvents);
qApp->sendPostedEvents();
However, I don't see how this would cause the strange behavior with
dialogs, since they have their own, local event loops.
Can anyone think of anything that could be causing this? I've been
altering code all day long in order to track this down, and I'm at a
point where shooting myself in the head starts to sound attractive :-P
More information about the Interest
mailing list