2014-07-05 4 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_() 

Что делать, чтобы оно работало? BTW, я пробовал то же самое с кодом QtDesiner, и у меня была та же проблема.

ответ

1

В вашем методе addLines вы создаете область прокрутки юра с bottomWidget в качестве родителя.

Затем вы добавляете bottomWidget в outputWidget´s layout, which makes outputWidget` его родитель.

А потом вы установите outputWidget в качестве содержимого виджета scroll, так что вы косвенно положить область прокрутки в itsef:

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

Если я заменяю

self.scroll = QScrollArea(self.bottonWidget) 

с:

self.scroll = QScrollArea(self) 

все работает нормально.

+0

Большое спасибо! Мой макет отлично работает! – user3808514