Qt: Лучший способ добавить контекстное меню в центральный виджет?

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

Вопрос

Я не понимаю, почему в книге Быстрое программирование GUI с 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(…) форма?

PS.: Я даже вижу, что Документация для QMainWindow.Addactions () даже не упоминается о любом первом аргументе (self.imageLabel, над)! Я полностью потерян относительно того, почему в книге используется первый фрагмент выше, а не последняя ... Помогите! :)

Это было полезно?

Решение

Использование Self.Addaction () на qmainwindow Разрешить все qMainwindow Childs (доки, statusbar, панель инструментов, Menubar, ...), чтобы использовать тезисы действия, не только центральный виджет.

Но лучший способ получить тонкозернированный контекстный меню управления состоит в том, чтобы использовать сигнал CustomContextMENURERUREVED (http://www.riverbankcomputing.co.uk/static/docs/pyqt4/html/qwidget.html#customcontextmenurewquest).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top