Вопрос

Я пытаюсь сделать свой QGroupBox прокручивается, как только его размер превышает 400 пикселей.Содержимое в QGroupBox генерируются с использованием цикла for.Это пример того, как это было сделано.

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)

Поскольку значение val зависит от некоторых других факторов, myform Размер макета определить не удалось.Чтобы решить эту проблему, я добавил QScrollableArea так.

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

К сожалению, это, похоже, не оказывает никакого влияния на групповой блок.Никаких признаков полосы прокрутки.Я что-то упускаю?

Это было полезно?

Решение

Если не считать очевидной опечатки (я уверен, вы имели в виду QScrollArea), я не вижу ничего плохого в том, что вы опубликовали.Таким образом, проблема должна заключаться в другом месте вашего кода:может отсутствующая планировка?

Чтобы убедиться, что мы находимся на одной волне, этот минимальный скрипт работает для меня так, как и ожидалось:

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_())
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top