2016-03-14 7 views
0

У меня есть приложение QT, и я хочу проверить его с помощью QTest. В скором времени о том, что я хочу сделать: у меня есть главное окно, где находится кнопка Настройки. Если я нажму на эту кнопку, появится QDialog. Я хочу проверить, действительно ли это происходитQT закрыть окно QTest в заблокированной теме

MainWindow mwindow; 
QTest::mouseClick(mwindow->showButton, QtCore::Qt::LeftButton) 

, а затем я проверил наличие текста в новом диалоговом окне и так далее.

Диалоговое окно появляется, но - как его закрыть в тесте, не закрывая его вручную? И как мне проверить наличие текста в нем. Если я правильно понял, я не могу ничего сделать в тесте, пока отображается диалог.

Что я делаю неправильно?

ответ

1

Вы можете использовать QTimer и QTest::keyClick().

Если QMessgeBox 'указатель S является msgBox, в QTimer' s timeout() слот,

QTest::keyClick(msgBox, Qt::Key_Enter); 

Кроме того, Вы можете проверить текст с QCOMPARE macro.

QCOMPARE(sourceText, targetText); 

APPEND

QTimer::singleShot Я думаю, что это полезно для решения на ваш вопрос.

QMessageBox test; 
QDialog& dlg = test; 
QTimer::singleShot(2000, &dlg, SLOT(close())); 
dlg.exec(); 

В приведенном выше коде тестовое сообщение будет закрываться через 2 секунды. Итак, ваш код может быть ..

MainWindow mwindow; 
QDialog& dlg = mwindow; 
QTimer::singleShot(2000, &dlg, SLOT(close())); //or SLOT(quit())? 
QTest::mouseClick(mwindow->showButton, QtCore::Qt::LeftButton) 

однако, я не проверял. Также попробуйте прочитать this articles. Надеюсь, это может вам помочь.

+1

Если у меня еще нет указателя (скажем, он будет создан при нажатии кнопки) - я не могу использовать ваше решение, верно? – GriMel