我正在尝试创建一个搜索重复文件的程序,并在Qt界面中添加这些重复的文件。
我的想法是搜索重复的文件并在滚动区域中显示这些项目。
问题在于,当我向滚动区域添加项目时,项目不会留在我打算成为滚动的空间中。
我尝试阅读许多教程并提供帮助,但我无法使其工作
下面我输入了我的代码:
为了加快速度,我正在开发
__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代码试过了同样的问题,我遇到了同样的问题。
答案 0 :(得分:1)
在addLines
方法中,您创建了以bottomWidget
作为其父级的滚动区域。
然后将bottomWidget
添加到outputWidget´s layout, which makes
outputWidget`其父级。
然后您将outputWidget
设置为scroll
的内容窗口小部件,因此您可以间接将滚动区域放入其中:
scroll --> outputWidget --> bottonWidget --> scroll --> outputWidget...
如果我更换
self.scroll = QScrollArea(self.bottonWidget)
使用:
self.scroll = QScrollArea(self)
一切正常。