如何在 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。我看到一些关于专利阻止开发者使用它的讨论。