2014-01-27 32 views
2

我無法弄清楚如何創建帶有兩行小工具的工具欄。我正在開發一個Python3/Qt4項目。(Qt)工具欄中的兩行小工具

我的猜測:

  • 一個小工具添加到工具欄插件

  • 添加垂直佈局(或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

你爲什麼要添加的按鈕佈局,而不是工具欄小工具嘗試添加該按鈕將toolbar_widget.addWidget(按鈕1) – Metoo

+0

您不能添加?窗口小部件:屬性錯誤:'QWidget'對象沒有屬性'addWidget'。 – suizokukan

+0

QToolbar有一個方法QAction * QToolBar :: addWidget(QWidget * widget) – Metoo

回答

1

很簡單:你真的需要兩個工具欄,一個在另一個。

您不能僅將子窗口小部件添加到工具欄。你的main_toolbar大概是QToolBar類。你不能簡單地添加一個toolbar_widget它!

您都不能更改QToolBar的佈局。工具欄管理自己的孩子的佈局,你不應該混淆它 - 它不是這樣設計的。

將小工具添加到工具欄上的唯一方法是通過addWidget法工具欄的的不是佈局!

您的代碼是錯誤的。你能做什麼,以及所有可以用工具欄做的是:

self.main_toolbar = self.addToolBar('MyToolBar') 

button1 = QtGui.QPushButton(self) 
button1.setText("button1") 
self.main_toolbar.addWidget(button1) 

button2 = QtGui.QPushButton(self) 
button2.setText("button2") 
self.main_toolbar.addWidget(button2) 

你想要做的根本就不是由工具欄支持。如果他們不合適,工具欄也許可以將其項目排列在多行中。這可能取決於風格。您可以自由插入內部佈局和兩個子按鈕的「高」工具欄小部件,但它看起來非常難看。

+0

這完全錯了:)你可以像任何其他容器部件一樣將任何你喜歡的部件添加到工具欄中。 – ekhumoro

+0

@ekhumoro我沒有說你不能添加你喜歡的小部件,只是你不能改變工具欄上的佈局。工具欄管理自己的佈局,所以'self.toolbar_widget.setLayout(self.toolbar_layout)'是錯誤的。 –

+0

這完全沒有錯!問題中的代碼工作得很好(如果你不相信我會很容易測試自己)。缺少的唯一東西是顯式地將小部件添加到工具欄。 – ekhumoro

1

您發佈的代碼很好,只是您忘記將小工具添加到工具欄。

可以使用QToolBar.addWidget做到這一點:

self.main_toolbar.addWidget(self.toolbar_widget) 
+0

當然,它看起來像垃圾,而不是你應該如何使用工具欄。 –

+0

@KubaOber。對我來說似乎沒問題,特別是如果佈局邊距被移除並且間距被調整。基本上,它看起來像兩個窄的按鈕,一個在另一個之上 - 我想這是OP之後的東西。 – ekhumoro