有没有办法阻止工具栏的隐藏操作?

在Qt中,如果我右键单击工具栏,将显示允许我隐藏工具栏的菜单。我需要禁用此功能,因为我不希望工具栏可以隐藏。有没有办法做到这一点?     
已邀请:
继承QToolbar并重新实现
contextMenuEvent()
。     
我能够直接在工具栏(而不是主窗口)上设置ContextMenuPolicy,只要我使用
Qt::PreventContextMenu
Qt::ActionsContextMenu
Prevent
删除了上下文菜单,右键单击对工具栏没有任何影响,而
Actions
创建了一个很好的上下文菜单,由我工具栏中的操作组成。
Qt::NoContextMenu
似乎没有任何影响。
toolbar->setContextMenuPolicy(Qt::PreventContextMenu);
    
使用setContextMenuPolicy(Qt :: NoContextMenu)作为工具栏的主窗口。     
覆盖QMainWindow :: createPopupMenu(),例如
QMenu* MyApp::createPopupMenu()
{
  QMenu* filteredMenu = QMainWindow::createPopupMenu();
  filteredMenu->removeAction( mUnhidableToolBar->toggleViewAction() );
  return filteredMenu;
}
请注意,建议禁用上下文菜单的其他答案仅在您要禁用所有工具栏和所有停靠窗口小部件的隐藏/显示时才有效。     
有几种方法可以实现这一点,而无需更改contextMenu功能。请参阅以下3个PySide示例: 1.禁用
QToolBar
toggleViewAction
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,要么想要删除动作,请查看Steven的答案。     

要回复问题请先登录注册