2010-11-30 14 views
21

मैं क्यूटी के कीप्रेस फ़ंक्शन के माध्यम से किसी एप्लिकेशन पर कीप्रेस को अनुकरण कर रहा हूं। सभी कीप्रेस ठीक काम करते हैं। हालांकि जब मैं QT::Key_Enter पास करता हूं जो वर्तमान में सक्रिय विंडो के ठीक बटन को दबाता है, या QT::Key_Cancel रद्द बटन के लिए, यह कुछ भी नहीं करता है।क्यूटी में विजेट के बच्चे कैसे प्राप्त करते हैं?

मैं शायद सोच रहा हूं, क्योंकि इन बटनों पर ध्यान नहीं है, और मूल विंडो में स्वयं ही है। आप खिड़की के बच्चों को कैसे प्राप्त करते हैं? या इसके बजाय ठीक या रद्द करें बटन ढूंढें ताकि आप इसे सक्रिय विन्डो के रूप में सेट कर सकें और फिर KeyPresses सफलतापूर्वक पास कर सकें?

मेरे पास है:

QWidget *pWin = QApplication::activeWindow; 
QObjectList *pList = pWin->children(); 
//how do you iterate through the list and find the OK or Cancel button? 

उत्तर

44

आप एक विशिष्ट बच्चों को पाने के लिए ऑब्जेक्ट नाम के साथ findChild फ़ंक्शन का उपयोग कर सकते हैं। आप foreach या QListIterator का उपयोग कर सूची के माध्यम से समान नाम रखने वाले सभी बच्चों को प्राप्त करने के लिए findChildren का भी उपयोग कर सकते हैं।

QPushButton* button = pWin->findChild<QPushButton*>("Button name"); 
+0

मैं QListIterator का उपयोग कैसे करूं? – Owen

+0

यह दस्तावेज़ीकरण में समझाया गया है: http://doc.trolltech.com/4.7/qlistiterator.html#details –

+0

हाँ, मैंने इसे पढ़ लिया है। लेकिन मुझे लगता है कि जब आप QWidget के बच्चों की सूची प्राप्त करते हैं तो यह अलग होता है ... – Owen

2

आप अपने विजेट पर एक कस्टम event filter डाल करने के लिए महत्वपूर्ण घटना पर कब्जा और देखो क्या वास्तव में इसे करने के लिए होता देख सकते हैं:

एक बटन आप कोशिश कर सकते हैं पाने के लिए।

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