2016-03-11 111 views
0

我需要創建一個包含許多按鈕的工具欄(例如左側)。默認情況下,如果所有按鈕的總高度大於工具欄的高度,則這些剩餘按鈕將被隱藏。我想讓這個工具欄顯示所有按鈕,並讓我向下滾動查看其餘部分。到目前爲止,我在網上找不到任何有用的東西。有任何想法嗎?帶滾動條的PyQt QToolBar

回答

-1

任何有興趣在這裏是解決方案:

由於@Brendan亞伯的回答我一個想法走了過來。我所做的是我創建了我的工具欄,就像以前一樣。然後我將所有我的小部件(之前在此工具欄中)添加到帶有QVBoxLayout的新QWidget中。然後,我創建了一個QScrollArea,並將我最​​近創建的小部件設置爲此滾動區域的子部件。最後,我使用addWidget()將我的ScrollArea添加到工具欄。

class LeftToolbar(QtGui.QToolBar): 
    def __init__(self, *args): 
     QToolBar.__init__(self, *args) 
     self.setFloatable(False) 
     self.setMovable(False) 

     self.scroll_widget = QtGui.QWidget(self) 
     self.scroll_layout = QtGui.QVBoxLayout() 
     self.scroll_widget.setLayout(self.scroll_layout) 

     # Add your toolbar widgets here 
     self.ExampleWidget1 = QtGui.QLabel(self) 
     self.ExampleWidget1.setText("Example Text1") 
     self.scroll_layout.addWidget(self.ExampleWidget1) 

     self.ExampleWidget2 = QtGui.QLabel(self) 
     self.ExampleWidget2.setText("Example Text2") 
     self.scroll_layout.addWidget(self.ExampleWidget2) 

     # Create QScrollArea 
     self.scroll_area = QtGui.QScrollArea() 
     self.scroll_area.setWidget(self.scroll_widget) 
     self.addWidget(self.scroll_area) 

# Create object LeftToolbar in your main window 
self.LeftToolbar = LeftToolbar() 
self.addToolBar(Qt.LeftToolBarArea, self.LeftToolbar) 
1

您應該可以將QToolBar貼在QScrollArea的內部。

toolbar = QtGui.QToolBar() 
toolbar.setOrientation(QtCore.Qt.Vertical) 
for i in range(20): 
    toolbar.addAction('Action{0}'.format(i)) 
scroll_area = QtGui.QScrollArea() 
scroll_area.setWidget(toolbar)