甚至在 SplitView 中初始分配空间
Posted
技术标签:
【中文标题】甚至在 SplitView 中初始分配空间【英文标题】:Even initial distribution of space in a SplitView 【发布时间】:2016-08-28 04:22:54 【问题描述】:我正在使用 SplitView
编写 QML 应用程序。我希望初始空间在项目之间均匀分布,但一个项目占据了所有空间。
import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtQuick.Controls 1.4
ApplicationWindow
id:window; visible:true
width:500; height:300
title:'Borked Layouts'
SplitView
orientation:Qt.Horizontal
anchors.fill:parent
Rectangle color:'red'
Layout.minimumWidth:50; Layout.fillWidth:true
Layout.preferredWidth:window.width/2
SplitView
orientation:Qt.Vertical
Layout.minimumWidth:50
Layout.preferredWidth:window.width/2
Rectangle color:'green'
Layout.minimumHeight:50; Layout.fillWidth:true
Rectangle color:'blue'
Layout.minimumHeight:50; Layout.fillWidth:true
我可以拖动空格之间的分隔符来实现我想要的分布,并且尊重最小尺寸。但是如何才能在项目之间共享初始分布?
【问题讨论】:
直到您需要将视图拆分为 3 或更多并发现调整大小有多糟糕并从头开始实现您自己的拆分视图... 【参考方案1】:我之前从未使用过SplitView
,所以这让我很惊讶,但是在查看bugreports.qt.io 的类似问题后,我看到了this:
SplitView 并不是真正的布局,因此我们不会支持附加的 Layout 属性中的所有属性。使用 SplitView 时,只需直接在项目上设置宽度和高度即可。
这有点与Layout
的用法相冲突,所以我不确定为什么会这样,但我想这是有充分理由的。
所以,你可以这样实现:
import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtQuick.Controls 1.4
ApplicationWindow
id: window
visible: true
width: 500
height: 300
SplitView
orientation: Qt.Horizontal
anchors.fill: parent
Rectangle
color: 'red'
width: window.width / 2
SplitView
orientation: Qt.Vertical
Layout.minimumWidth: 50
Rectangle
color: 'green'
Layout.minimumHeight: 50
Layout.fillWidth: true
Rectangle
color: 'blue'
Layout.minimumHeight: 50
Layout.fillWidth: true
【讨论】:
!这就是我相信文档所得到的。我没有尝试显式宽度或高度,因为文档说:“由于 fillWidth 项目将自动调整大小以适应额外空间,因此将忽略对宽度和高度的显式分配(但 Layout.minimumWidth 和 Layout.maximumWidth仍将受到尊重)。” 句子的第二部分实际上是指fillWidth
项目,而不是一般的项目。该文档可能会更清晰。
啊...这与我的解释不同,但我明白你在说什么。以上是关于甚至在 SplitView 中初始分配空间的主要内容,如果未能解决你的问题,请参考以下文章