我在调整宽度QSplitter
时遇到问题。我在Qt Designer中编写UI,现在看起来像这样:如何平均分配QSplitter的宽度
设计视图:
这里是我的对象检查:
我问题是如何将QSplitter
的宽度等分为左边和右边右侧区域。我希望将这种效果作为初始尺寸,然后客户可以做他想做的任何事情。
的影响,我想有如下:
在其他的世界,我在寻找一种方式来指定左和右区域的分流初始分割为50% /窗口宽度的50%。有没有任何选择来获得?
感谢您的帮助,请原谅,我刚开始学习Qt。
我在调整宽度QSplitter
时遇到问题。我在Qt Designer中编写UI,现在看起来像这样:如何平均分配QSplitter的宽度
设计视图:
这里是我的对象检查:
我问题是如何将QSplitter
的宽度等分为左边和右边右侧区域。我希望将这种效果作为初始尺寸,然后客户可以做他想做的任何事情。
的影响,我想有如下:
在其他的世界,我在寻找一种方式来指定左和右区域的分流初始分割为50% /窗口宽度的50%。有没有任何选择来获得?
感谢您的帮助,请原谅,我刚开始学习Qt。
简短的回答:
splitter->setSizes(QList<int>({INT_MAX, INT_MAX}));
说明
你不会在这种情况下,需要一个QSpacer
。分隔符的目标是填充所有可用空间。
QSplitter
提供了两种方法来指定其子项的大小:setStretchFactor
和setSizes
:
弹力不是有效的弹力系数;有效弹性系数 系数是通过取小部件的初始大小和 乘以弹性来计算的。
因此,将两个孩子的拉伸因子设置为相同的值(例如,1
)将无法正常工作:
splitter->setStretchFactor(0, 1);
splitter->setStretchFactor(1, 1);
setSizes
,因为只有相对大小关系:分离器部件的整体尺寸并不影响。相反,根据尺寸的相对权重,任何 附加/缺失空间将根据 分发到小部件中。
所以,我们可以认为这两个大小设置为一个将分发总规模超过两个孩子同样:
splitter->setSizes(QList<int>({1, 1}));
不行,你应该考虑到的最小尺寸的政策将被强制执行通过用其最小尺寸替换太小的值:
小部件的尺寸策略被保留。也就是说,小于相应小部件的最小大小提示的值 将被 替换为提示的值。
所以,你应该用一个值比你的孩子的最小尺寸更大,例如,可以用int
表示的最大数量,即INT_MAX
:
splitter->setSizes(QList<int>({INT_MAX, INT_MAX}));
延伸阅读
大多数时候,Qt做得很好,给所有小部件一个合适的大小,但是调整它可能会变得非常困难,需要一些试验和错误。因此,我想提供的Qt与布局管理工作时,这可能是有用的一些额外的资源: