QT: أفضل طريقة لإضافة قائمة سياق إلى عنصر واجهة المستخدم المركزية؟
-
01-10-2019 - |
سؤال
لا أفهم لماذا في الكتاب برمجة واجهة المستخدم الرسومية السريعة مع 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).