0

繰り返しファイルを検索し、この繰り返しファイルを 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 コードで同じことを試しましたが、同じ問題がありました。

4

1 に答える 1

1

あなたの方法では、親としてあなたのaddLinesスクロール領域を作成しています。bottomWidget

次に、 outputWidget` にその親を追加bottomWidgetします。outputWidget´s layout, which makes

そしてoutputWidget、 のコンテンツ ウィジェットとして設定scrollするので、間接的にスクロール エリアをそれ自体に配置します。

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

交換したら

self.scroll = QScrollArea(self.bottonWidget)

と:

self.scroll = QScrollArea(self)

すべて正常に動作します。

于 2014-07-06T06:23:57.837 に答える