2010-11-18 18 views
7

मैं एक टेस्ट ऐप लिख रहा हूं जो कुंजी प्रेस को अनुकरण करता है और मैं यह जानना चाहता हूं कि प्रत्येक कुंजी प्रेस के बाद कौन सी विंडो प्रदर्शित होती है। कोड ब्लॉक यहाँ है।क्यूटी: मैं वर्तमान में चल रही विंडो कैसे प्राप्त करूं?

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 जोड़ने का प्रयास करें। –

संबंधित मुद्दे

 संबंधित मुद्दे