bitflyer
1st June 2010, 14:39
I haven't seen this discussed elsewhere, so I thought others might find it useful to know this.
I have an app (basically just one top level Widget) that puts up a modal QMessageBox at one point. I am the testing my Widget with QTestLib (env: Qt 4.6.2 and Windows). My problem was how to get aQTest::KeyClick() delivered to the modal dialog from a test function.
The thing is that when launching a modal dialog using either the static QMessageBox::information() function, or by calling exec() on a QMessageBox object, the UI (thread) is blocked and the test function can't call KeyClick() before the user dismisses the modal dialog manually - which means that user interaction is needed and the test cannot be run fully automatically. This is not what I wanted.
However, I found out that if my widget under testing launches the modal dialog with QMessageBox::open(), the test function will continue running and it can dismiss the dialog by calling QTest::KeyClick() on it (I am using qApp->activeModalWidget() to get a pointer to the dialog). So, the test is now fully automatic!
This works for me. But I am interested to hear if there are other ways to deal with this kind of problem?
I have an app (basically just one top level Widget) that puts up a modal QMessageBox at one point. I am the testing my Widget with QTestLib (env: Qt 4.6.2 and Windows). My problem was how to get aQTest::KeyClick() delivered to the modal dialog from a test function.
The thing is that when launching a modal dialog using either the static QMessageBox::information() function, or by calling exec() on a QMessageBox object, the UI (thread) is blocked and the test function can't call KeyClick() before the user dismisses the modal dialog manually - which means that user interaction is needed and the test cannot be run fully automatically. This is not what I wanted.
However, I found out that if my widget under testing launches the modal dialog with QMessageBox::open(), the test function will continue running and it can dismiss the dialog by calling QTest::KeyClick() on it (I am using qApp->activeModalWidget() to get a pointer to the dialog). So, the test is now fully automatic!
This works for me. But I am interested to hear if there are other ways to deal with this kind of problem?