大佬教程收集整理的这篇文章主要介绍了调整 QSplitter 的大小不尊重 QSizePolicy 或 setStretchFactor?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 QSplitter 中设置了项目的大小策略,但它似乎没有任何影响。当我在下面的示例中调整窗口大小时,我希望我的左侧小部件在达到其大小提示 (QSizePolicy.Preferred) 后停止增长,而右侧小部件尽可能扩大 (QSizePolicy.Expanding)。
如果我把它们放在一个布局中就可以了:
@H_772_8@from PyQt5 import QtWidgets,QtCore app = QtWidgets.QApplication([]) class coloredBox(QtWidgets.qframE): def __init__(self,color): super().__init__() self.setStyleSheet(f'BACkground-color: {Color}') def sizeHint(self) -> QtCore.QSize: return QtCore.QSize(200,200) Box1 = coloredBox('red') Box2 = coloredBox('green') splitter = QtWidgets.QHBoxLayout() splitter.setContentsmargins(0,0) splitter.setSpacing(0) splitter.addWidget(Box1) splitter.addWidget(Box2) Box1.setSizePolicy(QtWidgets.QSizePolicy.Preferred,QtWidgets.QSizePolicy.Preferred) Box2.setSizePolicy(QtWidgets.QSizePolicy.Expanding,QtWidgets.QSizePolicy.Expanding) container = QtWidgets.QWidget() container.setLayout(splitter) container.show() app.exec_()
但是如果我把它们放在 QSplitter 中就不起作用了,splitter 只是均匀地分割它们之间的空间:
@H_772_8@from PyQt5 import QtWidgets,QtCore from PyQt5.QtCore import Qt app = QtWidgets.QApplication([]) class coloredBox(QtWidgets.qframE): def __init__(self,200) Box1 = coloredBox('red') Box2 = coloredBox('green') splitter = QtWidgets.QSplitter(Qt.Horizontal) splitter.setStretchFactor(0,0) splitter.setStretchFactor(1,1) splitter.addWidget(Box1) splitter.addWidget(Box2) Box1.setSizePolicy(QtWidgets.QSizePolicy.Preferred,QtWidgets.QSizePolicy.Expanding) container = QtWidgets.QMainWindow() container.setCentralWidget(splitter) container.show() app.exec_()
布局与拆分器:
问题在于您过早设置拉伸系数。
解决方案很简单:在添加小部件和设置其政策之后,移动 @H_772_8@setStretchFactor 行。
显然,一种可能的替代方法是设置最大尺寸(基于 QSplitter 方向),但这不完全相同。
如果拆分器中的所有小部件都具有最大尺寸(包括仅存在一个小部件的情况),结果是拆分器将具有基于这些小部件的最大尺寸,具体取决于 (或“上方”)它的布局,但如果拆分器是顶级窗口,那么每当它被调整到大于其子窗口[ren]的最大值时,都会有一些空白空间。
以上是大佬教程为你收集整理的调整 QSplitter 的大小不尊重 QSizePolicy 或 setStretchFactor?全部内容,希望文章能够帮你解决调整 QSplitter 的大小不尊重 QSizePolicy 或 setStretchFactor?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。