如何在 PySide 中创建功能区菜单
How to create ribbon menu in PySide
我正在尝试创建一个具有现代外观用户界面的桌面应用程序,我的意思是专门用功能区菜单替换传统的菜单栏和工具栏,例如 MS Office 套件中的一个。
我在使用堆叠到 QTabWidget 中的 QToolBar(带有 QActions)时取得了一些进展,但问题是,只有当我将它设置为 CentralWidget 时它才能正确显示。后来,当我想实现 table (QTableWidget) 时,除了 table...
色带方法:
def tab_menu(self):
self.tabWidget = QTabWidget()
self.tabWidget.setFixedHeight(120)
self.setCentralWidget(self.tabWidget)
self.tab1 = QFrame()
layout = QGridLayout()
addFile = QAction('Add entry', self)
addFile.setIcon(icon1)
removeFile = QAction('Remove entry', self)
removeFile.setIcon(icon2)
addFolder = QAction('New category', self)
addFolder.setIcon(icon3)
removeFolder = QAction('Remove category', self)
removeFolder.setIcon(icon4)
editFile = QAction('Change entry', self)
editFile.setIcon(icon5)
toolBar = QToolBar()
toolBar.addAction(addFile)
toolBar.addAction(removeFile)
toolBar.addAction(editFile)
toolBar.addSeparator()
toolBar.addAction(addFolder)
toolBar.addAction(removeFolder)
icon_width = 60
toolBar.setIconSize(QSize(icon_width, icon_width))
layout.setAlignment(Qt.AlignLeft)
layout.addWidget(toolBar, 0, 0)
self.tab1.setLayout(layout)
self.tabWidget.addTab(self.tab1, 'Edit')
self.tabWidget.show()
我想知道如何 "anchor" 放置 QTabWidget,应该放在 toolbar/menubar 的位置。我看到 https://doc.qt.io/qt-5/qmainwindow.html 中显示的布局,但我不确定如何使用它。
这是一个老问题,可惜没有人回答。
如果您想要 RibbonBar
的 固定 位置,您只需将其插入 QWidget
容器中,使用 [=12] 分割表格=] 并将 QWidget
填充到第一个(即顶部)部分。
然而,如果您真的想使用 QDockWidgetArea
,那么您必须使用 QDockWidget
作为父容器并将其放入 TopDockWidgetArea
,这将然后只是一个默认位置,用户可以移动它。也许还有一种方法可以使用Qt.TopToolBarArea
,但我没试过。
但我想知道,是否可以自由使用Ribbonbar idea。我看到一些关于专利阻止开发者使用它的讨论。
我正在尝试创建一个具有现代外观用户界面的桌面应用程序,我的意思是专门用功能区菜单替换传统的菜单栏和工具栏,例如 MS Office 套件中的一个。
我在使用堆叠到 QTabWidget 中的 QToolBar(带有 QActions)时取得了一些进展,但问题是,只有当我将它设置为 CentralWidget 时它才能正确显示。后来,当我想实现 table (QTableWidget) 时,除了 table...
色带方法:
def tab_menu(self):
self.tabWidget = QTabWidget()
self.tabWidget.setFixedHeight(120)
self.setCentralWidget(self.tabWidget)
self.tab1 = QFrame()
layout = QGridLayout()
addFile = QAction('Add entry', self)
addFile.setIcon(icon1)
removeFile = QAction('Remove entry', self)
removeFile.setIcon(icon2)
addFolder = QAction('New category', self)
addFolder.setIcon(icon3)
removeFolder = QAction('Remove category', self)
removeFolder.setIcon(icon4)
editFile = QAction('Change entry', self)
editFile.setIcon(icon5)
toolBar = QToolBar()
toolBar.addAction(addFile)
toolBar.addAction(removeFile)
toolBar.addAction(editFile)
toolBar.addSeparator()
toolBar.addAction(addFolder)
toolBar.addAction(removeFolder)
icon_width = 60
toolBar.setIconSize(QSize(icon_width, icon_width))
layout.setAlignment(Qt.AlignLeft)
layout.addWidget(toolBar, 0, 0)
self.tab1.setLayout(layout)
self.tabWidget.addTab(self.tab1, 'Edit')
self.tabWidget.show()
我想知道如何 "anchor" 放置 QTabWidget,应该放在 toolbar/menubar 的位置。我看到 https://doc.qt.io/qt-5/qmainwindow.html 中显示的布局,但我不确定如何使用它。
这是一个老问题,可惜没有人回答。
如果您想要 RibbonBar
的 固定 位置,您只需将其插入 QWidget
容器中,使用 [=12] 分割表格=] 并将 QWidget
填充到第一个(即顶部)部分。
然而,如果您真的想使用 QDockWidgetArea
,那么您必须使用 QDockWidget
作为父容器并将其放入 TopDockWidgetArea
,这将然后只是一个默认位置,用户可以移动它。也许还有一种方法可以使用Qt.TopToolBarArea
,但我没试过。
但我想知道,是否可以自由使用Ribbonbar idea。我看到一些关于专利阻止开发者使用它的讨论。