2010-11-18 3 views
7

Я пишу тестовое приложение, которое имитирует нажатия клавиш, и я хотел бы получить, какое окно отображается после каждого нажатия клавиши. Вот блок кода.Qt: Как получить текущее окно?

std::auto_ptr<MyForm> pForm(new MyForm(3,3)); 
QTest::keyPress(pForm.get(), Qt::Key_0); 

После нажатия кнопки 0 здесь, окно собирается показать, и я хотел бы, чтобы проверить, что окно это, чтобы я мог QCompare/оценить его позже.

Любые идеи?

Обновлено:

Я получаю ошибку сегментации, когда я использую

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")); 

ответ

8

Если все окна были созданы с помощью приложения, вы можете использовать QApplication класс. Например, функция activeWindow() возвращает виджет с фокусом ввода. Но есть много других функций, которые могут вам помочь.

Надеюсь, что поможет

+0

+1 Это правильное решение. – Venemo

+0

Я получаю ошибку сегментации. Я мог бы что-то сделать неправильно ... Я обновил блок кода выше ... :( – Owen

+3

Как поясняется в документации, указатель возврата может быть нулевым, если в окне нет фокуса ввода. Это может произойти там, где вдова не имеет ввода клавиатуры виджет. Попытайтесь добавить QTextEdit в свои тестовые окна. –

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