التقاط أحداث تغيير النص في QCOMBOBOX
سؤال
أقوم بتطوير تطبيق QT على Red Hat Linux. أرغب في التقاط الأحداث المغطاة بمفتاح إرجاع النقل في أ QComboBox
.
لقد قمت بتوصيل فتحة بالإشارة editTextChanged()
الذي ينبعث من كل الصحافة الرئيسية ولكن ليس ل مفتاح الادخال.
لما ذلك؟ هل هناك أي طريقة أخرى للكشف عودة النقل?
المحلول
أفترض أنك كتبت فتحة وربطها QComboBox::editTextChanged()
الإشارة.
يتم إطلاق هذه الإشارة عندما يتغير النص و يدخل لا يغير النص ، فهو يقبله. إذا كنت تريد التقاط إرجاع, ، هناك عدد من الطرق التي يمكنك متابعتها.
الفئة الفرعية
QComboBox
.
تجاوزkeyPressEvent()
: اول مكالمةQComboBox::keyPressEvent()
ثم تحقق مما إذا كان المفتاح المضغوط يدخل. إذا كان الأمر ، تنبعث من إشارة.
استخدم هذه الفئة الفرعية كلما احتجت. ابحث عن الترويج عن واجهة المستخدم في QDesigner إذا كنت لا تعرف كيف.تنفيذ فصل جديد يرث
QObject
. في هذا الفصل ، تجاوزeventFilter()
: تحقق مما إذا كان الحدث عبارة عن مطبوعة مفتاح. إذا كان الأمر كذلك ، تحقق مما إذا كان يدخل مفتاح. إذا كان الأمر ، تنبعث من إشارة.
ثم ، قم بإنشاء مثيل لهذه الفئة وقم بتعيينه كمرشح حدث علىQComboBox
. قم بتوصيل فتحة بإشارة هذه المثيل ، والتي قمت بتطبيقها.
إذا لم تكن هذه واضحة ، أوصي بقراءة الصفحات التالية:
نصائح أخرى
يمكنك أيضا النظر في activated( const QString& )
الإشارة. قد ينبعث منه عند إدخال يضرب المستخدم.