我无法弄清楚如何使用两行小部件创建工具栏。我正在研究Python3 / Qt4项目。
我的猜测:
将小部件添加到工具栏小部件
向窗口小部件添加垂直布局(或QGridLayout,无关紧要)
将工具栏的按钮添加到布局
但我得到的只是一个小而空的工具栏:我是否需要以某种方式“拉伸”小部件?
我的Python3代码,试图在工具栏中垂直插入两个按钮:
self.main_toolbar = self.addToolBar('MyToolBar')
self.toolbar_widget = QtGui.QWidget(self.main_toolbar)
self.toolbar_layout = QtGui.QVBoxLayout()
self.toolbar_widget.setLayout(self.toolbar_layout)
button1 = QtGui.QPushButton(self)
button1.setText("button1")
self.toolbar_layout.addWidget( button1 )
button2 = QtGui.QPushButton(self)
button2.setText("button2")
self.toolbar_layout.addWidget( button2 )
答案 0 :(得分:1)
这很简单:你真的需要两个工具栏,一个在另一个工具栏下。
您不能仅将子窗口小部件添加到工具栏。您的main_toolbar
可能属于QToolBar
级。您不能简单地向其添加toolbar_widget
!
您都无法更改QToolBar
的布局。工具栏管理其子项本身的布局,你不应该搞乱它 - 它不是那样设计的。
向工具栏添加小部件的唯一方法是通过工具栏的<{1}}方法 ,不是布局!
你的代码错了。你可以做什么,以及你可以用工具栏做的所有事情是:
addWidget
工具栏根本不支持您想要做的事情。或许,工具栏可能会将其项目排列在多行中,如果它们并非全部适合。这可能取决于风格。您可以自由插入具有内部布局和内部两个子按钮的“高”工具栏小部件,但它看起来非常难看。
答案 1 :(得分:1)
您发布的代码很好,只是您忘记将小部件添加到工具栏中。
您可以使用QToolBar.addWidget执行此操作:
self.main_toolbar.addWidget(self.toolbar_widget)