سؤال

أقوم بتطوير تطبيق QT على Red Hat Linux. أرغب في التقاط الأحداث المغطاة بمفتاح إرجاع النقل في أ QComboBox.

لقد قمت بتوصيل فتحة بالإشارة editTextChanged() الذي ينبعث من كل الصحافة الرئيسية ولكن ليس ل مفتاح الادخال.
لما ذلك؟ هل هناك أي طريقة أخرى للكشف عودة النقل?

هل كانت مفيدة؟

المحلول

أفترض أنك كتبت فتحة وربطها QComboBox::editTextChanged() الإشارة.
يتم إطلاق هذه الإشارة عندما يتغير النص و يدخل لا يغير النص ، فهو يقبله. إذا كنت تريد التقاط إرجاع, ، هناك عدد من الطرق التي يمكنك متابعتها.

  1. الفئة الفرعية QComboBox.
    تجاوز keyPressEvent() : اول مكالمة QComboBox::keyPressEvent() ثم تحقق مما إذا كان المفتاح المضغوط يدخل. إذا كان الأمر ، تنبعث من إشارة.
    استخدم هذه الفئة الفرعية كلما احتجت. ابحث عن الترويج عن واجهة المستخدم في QDesigner إذا كنت لا تعرف كيف.

  2. تنفيذ فصل جديد يرث QObject. في هذا الفصل ، تجاوز eventFilter() : تحقق مما إذا كان الحدث عبارة عن مطبوعة مفتاح. إذا كان الأمر كذلك ، تحقق مما إذا كان يدخل مفتاح. إذا كان الأمر ، تنبعث من إشارة.
    ثم ، قم بإنشاء مثيل لهذه الفئة وقم بتعيينه كمرشح حدث على QComboBox. قم بتوصيل فتحة بإشارة هذه المثيل ، والتي قمت بتطبيقها.

إذا لم تكن هذه واضحة ، أوصي بقراءة الصفحات التالية:

باستخدام أجهزة واجهة مستخدم مخصصة مع مصمم QT

أحداث QT ومرشحات الأحداث

نصائح أخرى

يمكنك أيضا النظر في activated( const QString& ) الإشارة. قد ينبعث منه عند إدخال يضرب المستخدم.

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