(Qt)工具栏中有两行小部件

时间:2014-01-27 09:17:11

标签: qt pyqt toolbar

我无法弄清楚如何使用两行小部件创建工具栏。我正在研究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 )

2 个答案:

答案 0 :(得分:1)

这很简单:你真的需要两个工具栏,一个在另一个工具栏下。

您不能仅将子窗口小部件添加到工具栏。您的main_toolbar可能属于QToolBar级。您不能简单地向其添加toolbar_widget

您都无法更改QToolBar的布局。工具栏管理其子项本身的布局,你不应该搞乱它 - 它不是那样设计的。

向工具栏添加小部件的唯一方法是通过工具栏的<{1}}方法 不是布局!

你的代码错了。你可以做什么,以及你可以用工具栏做的所有事情是:

addWidget

工具栏根本不支持您想要做的事情。或许,工具栏可能会将其项目排列在多行中,如果它们并非全部适合。这可能取决于风格。您可以自由插入具有内部布局和内部两个子按钮的“高”工具栏小部件,但它看起来非常难看。

答案 1 :(得分:1)

您发布的代码很好,只是您忘记将小部件添加到工具栏中。

您可以使用QToolBar.addWidget执行此操作:

    self.main_toolbar.addWidget(self.toolbar_widget)