菜单分隔符不显示

Posted

技术标签:

【中文标题】菜单分隔符不显示【英文标题】:Menu Separator Does Not Show 【发布时间】:2021-02-26 15:30:10 【问题描述】:

在为 MacOS 上的 PYQT5 构建应用程序菜单栏时,我模拟了 PYQT5 后端不会自动创建的系统菜单,并尝试修复它不完整创建的那些。例如,当使用标题&View 创建 QMenu 小部件时,后端将自动生成“进入全屏”菜单选项(并且非常有助于管理全屏操作)。但是,后端不会在自动生成的“进入全屏”项之前显示分隔符。在sys.exit(qApp.exec_()) 之前添加分隔符的每一次尝试都被证明是徒劳的。

self.view_menu = QtWidgets.QMenu('&View', self)
self.view_menu.addAction('&Refresh Chart', self.create_plot, QtCore.Qt.CTRL + QtCore.Qt.Key_R)
self.view_menu.addAction('&Update Chart', self.file_open_update, QtCore.Qt.CTRL + QtCore.Qt.Key_U)
self.view_menu.addSeparator()  # <---- This separator is not displayed.
self.menuBar().addMenu(self.view_menu)

【问题讨论】:

【参考方案1】:

为了让分隔符显示在系统生成的菜单项上方,需要在首次构建菜单栏时生成一个附加(临时)菜单项,并在首次显示菜单栏之前将其删除。

self.view_menu = QtWidgets.QMenu('&View', self)
self.view_menu.addAction('&Refresh Chart', self.create_plot, QtCore.Qt.CTRL + QtCore.Qt.Key_R)
self.view_menu.addAction('&Update Chart', self.file_open_update, QtCore.Qt.CTRL + QtCore.Qt.Key_U)
self.view_menu.addSeparator()
self.__menu_temp = self.view_menu.addAction('temp')  # <---- Temporary menu item
self.view_menu.aboutToShow.connect(self.view_menu_build)  # <---- Remove item before menu is displayed
self.menuBar().addMenu(self.view_menu)

def view_menu_build(self):
    """ Remove temporary menu item """
    self.view_menu.removeAction(self.__menu_temp)

【讨论】:

以上是关于菜单分隔符不显示的主要内容,如果未能解决你的问题,请参考以下文章

已制作好的Word文档里面的页码,显示{PAGE},不显示数字,怎么解决?

在android操作栏中的菜单项之间显示分隔符

word中插入页码最后一页不显示页码怎样设置?

在word文档里,第3页为啥没页码显示呢?

sql server 2005实现树形菜单显示的数据库表怎么设计?

在菜单栏中创建带有文本的分隔符