Есть несколько способов добиться этого без изменения функциональности contextMenu. Смотрите следующие 3 примера PySide:
1. Отключить toggleViewAction
из QToolBar
:
UnhidableToolBar = QToolBar()
UnhidableToolBar.toggleViewAction().setEnabled(False)
2. Подключение к visibilityChanged
сигналу :
toolbar.visibilityChanged.connect(lambda: toolbar.setVisible(True))
3. Подкласс QToolBar
и использовать hideEvent
:
class UnhideableQToolBar(QToolBar):
def hideEvent(self, event):
self.setVisibile(True)
Рекомендация:
Хотя 2 и 3 довольно грязные, решение 1 показывает панель инструментов в контекстном меню, как QDockWidget
, у которого установлена функция DockWidgetClosable
. Поэтому либо воспользуйтесь решением 1, либо, если вы хотите удалить действие, взгляните на ответ Стивена.