سؤال

أنا أحاكي مفاتيح المفاتيح مع تطبيق من خلال وظيفة 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");

نصائح أخرى

قد ترغب في وضع العرف مرشح الحدث على القطعة الخاصة بك لالتقاط الحدث الرئيسي ومعرفة ما يحدث بالفعل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top