كيف تحصل على أطفال عنصر واجهة مستخدم في كيو تي؟
سؤال
أنا أحاكي مفاتيح المفاتيح مع تطبيق من خلال وظيفة kypress من QT. جميع المفاتيح تعمل بشكل جيد. لكن عندما أتجاوز أ QT::Key_Enter
الذي من المفترض أن يضغط على زر موافق للنافذة النشطة حاليًا ، أو QT::Key_Cancel
بالنسبة لزر الإلغاء ، لا يفعل شيئًا.
ربما أفكر ، لأن هذه الأزرار ليس لها التركيز ، والنافذة الأصل نفسها لديها. كيف تحصل على أطفال النافذة؟ أو بدلاً من ذلك ، ابحث عن زر موافق أو إلغاء عليه حتى تتمكن من ضبطه على أنه ActiveWindow ثم تمرير Keypresses بنجاح؟
أملك:
QWidget *pWin = QApplication::activeWindow;
QObjectList *pList = pWin->children();
//how do you iterate through the list and find the OK or Cancel button?
المحلول
يمكنك استخدام ال findChild
وظيفة مع اسم الكائن للحصول على أطفال معينين. يمكنك استخدام أيضا findChildren
للحصول على جميع الأطفال الذين لديهم نفس الاسم والتكرار من خلال القائمة باستخدام foreach
أو QListIterator
.
للحصول على زر يمكنك تجربته:
QPushButton* button = pWin->findChild<QPushButton*>("Button name");
نصائح أخرى
قد ترغب في وضع العرف مرشح الحدث على القطعة الخاصة بك لالتقاط الحدث الرئيسي ومعرفة ما يحدث بالفعل.