2014-07-05 61 views
0

我正在嘗試創建一個程序來搜索重複的文件,並在Qt界面中添加此重複的文件。Pyside - 滾動區:我添加項目時滾動區域不滾動

我的想法是搜索重複的文件並在滾動區域顯示這些項目。

問題是,當我添加項目滾動區域的項目不留在我打算成爲滾動的空間。

我試着讀了許多教程和幫助,但我無法管理,使其工作

下面我把我的代碼:

爲了使其更快我正在開發中

__author__ = 'alvaro' 

from PySide.QtGui import QWidget, QVBoxLayout, QLabel, QLineEdit, QApplication,QToolButton, QHBoxLayout,QCheckBox, QComboBox, QGridLayout,QScrollArea 
from PySide.QtCore import QObject, SIGNAL 
import sys 

class MainDupFiles(QWidget): 
    def __init__(self): 
     super(MainDupFiles, self).__init__() 
     self.interface() 


    def interface(self): 
     self.setMaximumHeight(500) 
     self.vBoxTop = QVBoxLayout(self) 
     self.inputLabel = QLabel("Digite aqui o caminho de pasta que deseja verificar arquivos repetidos") 
     self.inputLine = QLineEdit() 

     self.vBoxTop.addWidget(self.inputLabel) 
     self.vBoxTop.addWidget(self.inputLine) 
     self.vBoxTop.setContentsMargins(10,10,10,0) 


     self.searchBtn = QToolButton() 
     self.searchBtn.setText("Search") 

     self.reportBtn = QToolButton() 
     self.reportBtn.setText("Generate Report") 

     self.deleteBtn = QToolButton() 
     self.deleteBtn.setText("Delete Repeated Files") 

     self.delAllCheckBox = QCheckBox("Delete All Files") 
     self.delGroupCheckBox = QCheckBox("Delete This Group") 

     self.groupCompoBox = QComboBox() 
     self.groupCompoBox.addItem("Select the File name") 
     self.groupCompoBox.setMinimumWidth(200) 

     self.hWidget = QWidget(self) 
     self.hBoxBtn = QHBoxLayout(self.hWidget) 

     self.hBoxBtn.addWidget(self.searchBtn) 
     self.hBoxBtn.addWidget(self.reportBtn) 
     self.hBoxBtn.addWidget(self.deleteBtn) 
     self.hBoxBtn.addWidget(self.groupCompoBox) 
     self.hBoxBtn.addWidget(self.delGroupCheckBox) 
     self.hBoxBtn.addWidget(self.delAllCheckBox) 

     self.vBoxTop.addWidget(self.hWidget) 

     QObject.connect(self.searchBtn, SIGNAL("clicked()"), self.addLines) 

    def addLines(self): 
     self.bottonWidget = QWidget() 
     self.outputWidget = QWidget() 

     self.outPutGrid = QGridLayout(self.outputWidget) 
     for i in range(10): 
      self.outPutGrid.addWidget(QLabel("TESTE")) 

     self.scroll = QScrollArea(self.bottonWidget) 
     self.scroll.setMinimumHeight(400) 
     self.outPutGrid.addWidget(self.bottonWidget) 
     self.scroll.setWidget(self.outputWidget) 
     self.vBoxTop.addWidget(self.scroll) 


if __name__ == "__main__": 
    qt_app = QApplication(sys.argv) 
    app = MainDupFiles() 
    app.show() 
    qt_app.exec_() 

我該怎麼做才能使它工作? 順便說一句,我已經嘗試了與QtDesiner代碼相同,我有同樣的問題。

回答

1

在您的addLines方法中,您正在創建以bottomWidget作爲其父項的yur滾動區域。

然後,您將bottomWidget添加到outputWidget´s layout, which makes outputWidget的父級。

然後設置outputWidgetscroll內容小部件,所以你間接把滾動區域到itsef:

scroll --> outputWidget --> bottonWidget --> scroll --> outputWidget... 

如果我更換

self.scroll = QScrollArea(self.bottonWidget) 

有:

self.scroll = QScrollArea(self) 

一切工作正常。

+0

非常感謝! 我的佈局現在工作正常! – user3808514