PyQt изменяет размер QSplitter до большего, чем QScrollArea

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

import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import QScrollArea

class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()
        self.initUI()

    def initUI(self):      
        hbox = QtGui.QHBoxLayout(self)
        first = QtGui.QFrame(self)
        first.setFrameShape(QtGui.QFrame.StyledPanel)
        first.setMinimumWidth(50)
        second = QtGui.QFrame(self)
        second.setFrameShape(QtGui.QFrame.StyledPanel)
        second.setMinimumWidth(50)
        third = QtGui.QFrame(self)
        third.setFrameShape(QtGui.QFrame.StyledPanel)
        third.setMinimumWidth(50)
        splitter = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter.addWidget(first)
        splitter.addWidget(second)
        splitter.addWidget(third)
        scrollArea = QScrollArea()  
        scrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
        scrollArea.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
        scrollArea.setWidgetResizable(True)
        scrollArea.setWidget(splitter)
        hbox.addWidget(scrollArea)
        self.setLayout(hbox)
        QtGui.QApplication.setStyle(QtGui.QStyleFactory.create('Cleanlooks'))
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('QtGui.QSplitter')
        self.show()

def main():
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()  

0 ответов

Другие вопросы по тегам