标题:【求助】QSplitter分割器分割比例设定的问题
取消只看楼主
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:934
专家分:5244
注 册:2015-8-10
结帖率:100%
 问题点数:0 回复次数:0 
【求助】QSplitter分割器分割比例设定的问题
最近在研究PyQt5,今天研究的是QSplitter,按照网上的例子做完修改了一下,增加了分割比例设定
但是很奇怪的是对splitter1 是有效的,但是对splitter2就没有效果了。 请大牛出手指点一二。

程序代码:
import sys
from PyQt5.QtWidgets import (QWidget, QHBoxLayout, QFrame,
                             QSplitter, QStyleFactory, QApplication)
from PyQt5.QtCore import Qt


class Example(QWidget):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        hbox = QHBoxLayout(self)

        topleft = QFrame(self)
        topleft.setFrameShape(QFrame.StyledPanel)

        topmid = QFrame(self)
        topmid.setFrameShape(QFrame.StyledPanel)

        topright = QFrame(self)
        topright.setFrameShape(QFrame.StyledPanel)

        bottom = QFrame(self)
        bottom.setFrameShape(QFrame.StyledPanel)

        # 通过QSplitter,用户可以拖动子控件边界来调整子控件的尺寸
        splitter1 = QSplitter(Qt.Horizontal)   # 水平方向宽度的调整
        splitter1.addWidget(topleft)           #  通过QSplitter需要至少两个控件
        splitter1.addWidget(topmid)
        splitter1.addWidget(topright)
        splitter1.setStretchFactor(0, 4)    #第一个参数是子控件的索引号,从0开始,第二个参数为比例。 下同
        splitter1.setStretchFactor(1, 3)
        splitter1.setStretchFactor(2, 2)

        #splitter2 = QSplitter(Qt.Horizontal)   #水平的可以一次添加多个控件,无需再次嵌套
        #splitter2.addWidget(splitter1)
        #splitter2.addWidget(topright)
        
        splitter2 = QSplitter(Qt.Vertical)     # 垂直方向宽度的调整
        splitter2.addWidget(splitter1)         #  QSplitter嵌套,后面的splitter的变化会影响前面splitter上所有控件的高度
        splitter2.addWidget(bottom)
        splitter2.setStretchFactor(0,1)
        splitter2.setStretchFactor(1,1)

        hbox.addWidget(splitter2)           # 由于已经进行了嵌套,所以只需要最后的splitter
        self.setLayout(hbox)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('QSplitter')
        self.show()

    def onChanged(self, text):
        self.lbl.setText(text)
        self.lbl.adjustSize()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
搜索更多相关主题的帖子: 分割器 分割 设定 Qt 控件 
2018-06-19 14:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-487994-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.237983 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved