2010-11-19 50 views
0

我正在編寫一個測試應用程序,測試顯示的窗體是否是正確的窗體。這是在按下菜單上的一個鍵後。這是一個代碼塊,我得到了分段錯誤。QT單元測試: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.窗口可能未被同步激活,但延遲,那麼您的代碼將無法工作。 – 2010-11-19 08:37:28

+0

Thanks dude ...你是對的...我在keyPress中添加了一個延遲,它工作! :d – Owen 2010-11-19 10:05:45

回答

0

弗蘭克是正確的。該窗口尚未同步激活。添加一個作爲keyPress參數的延遲解決了這個問題。謝謝弗蘭克!