سؤال

أحاول إنشاء تطبيق في QT / C ++ مع QT4.5 وأريد تغيير أي نوافذ نشطة تغيير التعتيم على حدث Mouseover ...

كما أفهمها، لا يوجد حدث صريح الماوس في كيو تي.

ومع ذلك، حصلت على أداء بدائي من خلال إعادة استخدام MousemoveEvent Qwidget () في الفصل الذي يعلن My Mainwindow. لكن MousemoveEvent Mainwindow لا يسمى كلما أن الماوس يسافر عبر أي من صناديق المجموعة التي قمت بإنشائها هناك (متفهمة لأن QGroupbox له إعادة استخدام MousemoveEvent).

لذلك كعمل رخيص حول، ما زلت أستخدم MousemoveEvent من MySwindow الخاص بي ولكن استفسار من وضع الماوس العالمي واستنادا إلى وضع (X و Y) في MainWindow (تم الحصول عليها من خلال -> POS ()) وحجم النافذة ( -> الحجم -> Rheight و RWidth)، أتحقق مما إذا كان الماوس ضمن حدود منطقة Mainwindow وتغيير العتامة وبالتالي.

وكان هذا نجاح محدود للغاية. الحدود الصحيحة تعمل بشكل جيد، فإن اليسار يتغير عتامة 4 بكسل في وقت مبكر. الجزء العلوي لا يعمل (يفترض أن الماوس يمر عبر شريط menubar وعنوان) والتغيرات السفلى في وقت مبكر جدا.

فكرت في إنشاء فئة حاوية فارغة Qwidget ثم ضع كل الباقي هناك، لكنني شعرت أنه لن يحل المشكلة الكبيرة في القطعة الأساسية التي لا تتلقى mousemoveevent إذا تم تنفيذها بالفعل في عنصر واجهة مستخدم.

يرجى اقتراح أي تصحيحات / أخطاء قمت بها في طريقتي أو أي طرق بديلة لتحقيق ذلك.

PS أنا أشك في هذه الأمور، لكنني أعمل QT Creator IDE، وليس تكامل QT في VS2008 (إنها نفس الفئات على أي حال - مترجم مختلف على الرغم من ذلك، مينغو)

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

المحلول

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

نصائح أخرى

قد تكون مهتما بمرشحات الأحداث. يثبت QOBJECT طريقة لاعتراض جميع الأحداث Zipping حول طلبك.

http://doc.trolltech.com/4.5/eventsandfilters.html#event-filters.

إذا فهمت ما تحاول القيام به، فسأعمل على إعادة تشغيل InteDhtvent () والخائن (). الحدث يدخل الماوس سيؤدي إلى إخراج يتلاشى والغزت سيؤدي إلى التلاشي.

تحرير: بعد إعادة قراءة عدة مرات، ما زلت غير متأكد من ما تحاول إنجازه. آسف إذا كان اقتراحي لا يساعد. :-)

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