如何拥有多个工具栏PyQt4

时间:2017-07-23 17:16:23

标签: python python-2.7 python-3.x pyqt pyqt4

我想在顶部有两个工具栏,但它们只是保持在一起

#The main toolbar 
self.formatbar = QToolBar() 

self.addToolBar( Qt.TopToolBarArea , self.formatbar )
self.formatbar.addSeparator()
self.formatbar.addWidget(self.fontComboBox)
self.formatbar.addWidget(self.fontSizeComboBox)
self.formatbar.addAction(closeActionTB)
self.formatbar.addAction(openActionTB)
self.formatbar.addAction(saveActionTB)
self.formatbar.addAction(capitalActionTB)
self.formatbar.addAction(smallActionTB)
self.formatbar.addAction(colorActionTB)
self.formatbar.addAction(colorActionBGTB)
self.formatbar.addAction(zoomInActionTB)
self.formatbar.addAction(zoomOutActionTB)
self.formatbar.addAction(changeBoldActionTB)
self.formatbar.addAction(changeItalicActionTB)
self.formatbar.addAction(changeFontUnderlineActionTB)
self.formatbar.addAction(undoActionTB)
self.formatbar.addAction(redoActionTB)
self.formatbar.addAction(magnifyTB)
self.formatbar.addAction(demagnifyTB)
self.formatbar.addAction(printActionTB)
self.formatbar.addAction(findActionTB)
self.formatbar.addAction(alLeftTB)
self.formatbar.addAction(alRightTB)
self.formatbar.addAction(alCenterTB)
self.formatbar.addAction(alJustifyTB)
self.formatbar.addAction(bulletListActionTB)
self.formatbar.addAction(numberListActionTB)

#here the toolbar finishes so i want a new toolbar       
self.formatbar2 = QToolBar()
self.insertToolBar(self.formatbar,self.formatbar2)
self.formatbar2.addAction(indentTB) 
self.formatbar2.addAction(deindentTB)
self.formatbar2.addAction(clearTB)
self.formatbar.addAction(copyRightsTB)

第一张图片是如何立即使用工具栏,第二张图片是我希望它如何

This is how the tool bar is right now

This is how i want i want it(i put it there manually)

1 个答案:

答案 0 :(得分:1)

根据docs

  

void QMainWindow :: insertToolBar(QToolBar *之前,QToolBar *工具栏)

     

将工具栏插入到之前工具栏占用的区域中   它出现在它之前。例如,在正常的从左到右的布局中   操作,这意味着工具栏将出现在左侧   之前在水平工具栏区域中指定的工具栏。

也就是说它将它置于before的位置,取而代之,并且正如我们所观察到的那样,它实现了它,但它不是你所期望的。

您必须使用addToolBarBreak

  

void QMainWindow :: addToolBarBreak(Qt :: ToolBarArea area =   Qt的:: TopToolBarArea)

     

在所有其他对象之后向指定区域添加工具栏分隔符   存在。

在你的情况下:

self.formatbar = QToolBar()
self.addToolBar( Qt.TopToolBarArea , self.formatbar )
# add actions and widgets
self.addToolBarBreak(Qt.TopToolBarArea) # or self.addToolBarBreak()
self.formatbar2 = QToolBar()
self.addToolBar( Qt.TopToolBarArea , self.formatbar2)
# add actions and widgets