我正在尝试创建具有现代外观的用户界面的桌面应用程序,这意味着我要用功能区菜单替换传统的菜单栏和工具栏,例如MS Office套件中的菜单栏。
使用QTabWidget堆叠的QToolBar(带有QActions),我已经取得了一些进展,但是问题是,只有将其设置为CentralWidget时,它才能正确显示。后来,当我想实现表(QTableWidget)时,除了表以外,它什么都没有显示...
功能区的方法:
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()
我想知道如何“固定” QTabWidget到哪里,工具栏/菜单应该在哪里。我看到了https://doc.qt.io/qt-5/qmainwindow.html上显示的布局,但不确定如何使用它。
答案 0 :(得分:0)
这是一个古老的问题,可惜没有得到回答。
如果您想要RibbonBar
的固定位置,只需将其插入QWidget
容器中,使用QVBoxLayout
分割表格,然后QWidget
进入第一部分(即顶部)。
如果您真的想使用QDockWidgetArea
,则必须使用QDockWidget
作为父容器,然后将其放入TopDockWidgetArea
,只有默认位置,用户才能移动它。也许也有一种使用Qt.TopToolBarArea
的方法,但是我没有尝试过。
但是我想知道,是否可以自由使用Ribbonbar的想法。我看到了一些有关专利的讨论,这些专利阻止开发人员使用它。