QT: أفضل طريقة لإضافة قائمة سياق إلى عنصر واجهة المستخدم المركزية؟

StackOverflow https://stackoverflow.com/questions/3582554

سؤال

لا أفهم لماذا في الكتاب برمجة واجهة المستخدم الرسومية السريعة مع Python و QT, ، تتم إضافة قائمة سياق إلى عنصر واجهة مستخدم مركزية عن طريق الاتصال addActions() على النافذة الرئيسية (self) ، مثل ذلك (ص 180):

self.addActions(self.imageLabel,
                (editInvertAction, …))

أين self هو QMainWindow, ، و imageLabel هو QLabel تم تعيينها كقاذب مركزي مع

# Added actions will be put in a context menu:
self.imageLabel.setContextMenuPolicy(Qt.ActionsContextMenu)
self.setCentralWidget(self.imageLabel)

الآن ، لماذا ترتبط النافذة الرئيسية بطريقة ما (من خلال self.addActions()) إلى قائمة سياق القطعة المركزية؟ أليس هذا كافيا للاتصال addActions() مباشرة على القطعة المركزية؟ في الواقع ، فإن ما يلي يقوم بإنشاء قائمة سياق:

self.imageLabel.addActions((editInvertAction, …))

لماذا لا مثال الكتاب على قائمة السياق بهذه الطريقة؟ أليس هذا يعادل أكثر مشاركة self.addActions(…) شكل؟

ملاحظة: حتى أرى أن وثائق لـ Qmainwindow.addactions () لا يذكر حتى أي حجة أولى (self.imageLabel, ، في الاعلى)! أنا ضائع تمامًا عن سبب استخدام الكتاب المقتطف الأول أعلاه بدلاً من آخر ... مساعدة! قون

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

المحلول

باستخدام self.addacty () على Qmainwindow ، السماح لجميع Qmainwindow Childs (الأرصفة ، شريط الحالة ، شريط الأدوات ، menubar ، ...) لاستخدام أرقام الأطروحات ، وليس فقط العنوان المركزي.

ولكن أفضل طريقة للحصول على التحكم في قائمة السياق الدقيقة هي استخدام إشارة CustomContextMenurediquested (http://www.riverbankcomputing.co.uk/static/docs/pyqt4/html/qwidget.html#customContextMenurequested).

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