2010-11-19 3 views
0

Я пишу тестовое приложение, которое будет проверять, является ли отображаемая форма правильной формой. Это происходит после нажатия клавиши в меню. Вот блок кода, где я получаю ошибку сегментации.QT unit-testing: qtestlib Ошибка сегментации

std::auto_ptr<MyForm> pForm(new MyForm(3,3)); 
QTest::keyPress(pForm.get(), Qt::Key_0); 
QWidget *pWin = QApplication::activeWindow(); 
QCOMPARE(pWin->windowTitle(), QString("My Second Menu")); 

Вопросы:

  • Действительно ли можно получить в настоящее время активное окно, когда вы только имитируя нажатие клавиши?
  • Я получаю нулевой указатель при использовании activeWindow, есть ли в любом случае вы можете получить дескриптор окна, которое должно отображаться на экране при нажатии клавиши?

Благодаря ...

+1

Две мысли: 1. убедитесь, что код, который вы ожидали бы действовать на Key_0, действительно запускается и создается меню. Если нет, попробуйте показать() форму. 2. Окно может не активироваться синхронно, но задерживается, тогда ваш код не будет работать. –

+0

Спасибо, чувак ... ты был прав ... Я добавил задержку в keyPress, и это сработало! : D – Owen

ответ

0

Франк был прав. Окно не синхронизировалось синхронно. Добавление задержки, являющейся параметром keyPress, решило проблему. Спасибо Фрэнку!

Смежные вопросы