2010-11-18 9 views
7

Piszę aplikację testową, która symuluje naciśnięcia klawiszy i chciałbym uzyskać to, co okno jest wyświetlane po każdym naciśnięciu klawisza. Oto blok kodu.Qt: Jak uzyskać aktualnie uruchomione okno?

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

Po naciśnięciu 0 tutaj, Okno jest zamiar pokazać się i chciałbym sprawdzić co okno jest tak mogę QCompare/oceniają go później.

Jakieś pomysły?

Aktualizacja:

Dostaję błąd segmentacji, gdy używam

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

Odpowiedz

8

Jeśli wszystkie okna zostały utworzone w aplikacji, można użyć klasy QApplication. Na przykład funkcja activeWindow() zwraca widżet, który ma fokus wejściowy. Ale jest wiele innych funkcji, które mogą ci pomóc.

Nadzieję, że pomaga

+0

+1 To jest prawidłowe rozwiązanie. – Venemo

+0

Mimo to otrzymuję błąd segmentacji. Być może robię coś nie tak ... Zaktualizowałem blok kodu powyżej ... :( – Owen

+3

Jak wyjaśniono w dokumentacji, wskaźnik powrotu może być pusty, jeśli żadne okno nie ma fokusu wejściowego. Może się to zdarzyć, gdy wdowa nie ma wejścia klawiatury widget Spróbuj dodać QTextEdit w swoich oknach testowych –

Powiązane problemy