Frage

Ich versuche meine zu machen QGroupBox scrollbar, sobald es höher als 400 Pixel wird.Die Inhalte in der QGroupBox werden mit einer for-Schleife generiert.Dies ist ein Beispiel dafür, wie es gemacht wurde.

mygroupbox = QtGui.QGroupBox('this is my groupbox')
myform = QtGui.QFormLayout()
labellist = []
combolist = []
for i in range(val):
    labellist.append(QtGui.QLabel('mylabel'))
    combolist.append(QtGui.QComboBox())
    myform.addRow(labellist[i],combolist[i])
mygroupbox.setLayout(myform)

Da der Wert von val hängt von einigen anderen Faktoren ab, die myform die Layoutgröße konnte nicht bestimmt werden.Um das zu lösen, habe ich ein hinzugefügt QScrollableArea so.

scroll = QtGui.QScrollableArea()
scroll.setWidget(mygroupbox)
scroll.setWidgetResizable(True)
scroll.setFixedHeight(400)

Leider scheint das keine Auswirkungen auf die Groupbox zu haben.Keine Spur von Bildlaufleiste.Vermisse ich etwas?

War es hilfreich?

Lösung

Abgesehen von dem offensichtlichen Tippfehler (ich bin sicher, du meintest QScrollArea), Ich kann nichts Falsches an dem sehen, was du gepostet hast.Das Problem muss also woanders in Ihrem Code liegen:ein fehlendes Layout vielleicht?

Um sicherzugehen, dass wir auf derselben Seite sind, funktioniert dieses minimale Skript für mich wie erwartet:

from PyQt4 import QtGui

class Window(QtGui.QWidget):
    def __init__(self, val):
        QtGui.QWidget.__init__(self)
        mygroupbox = QtGui.QGroupBox('this is my groupbox')
        myform = QtGui.QFormLayout()
        labellist = []
        combolist = []
        for i in range(val):
            labellist.append(QtGui.QLabel('mylabel'))
            combolist.append(QtGui.QComboBox())
            myform.addRow(labellist[i],combolist[i])
        mygroupbox.setLayout(myform)
        scroll = QtGui.QScrollArea()
        scroll.setWidget(mygroupbox)
        scroll.setWidgetResizable(True)
        scroll.setFixedHeight(400)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(scroll)

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window(25)
    window.setGeometry(500, 300, 300, 400)
    window.show()
    sys.exit(app.exec_())
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top