SplitView 中空间的初始分布

Phr*_*ogz 6 qt qml qtquickcontrols

我正在使用SplitView. 我希望初始空间在项目之间均匀分布,但一个项目占据了所有空间。

在此处输入图片说明

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
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以拖动空格之间的分隔符来实现我想要的分布,并且尊重最小尺寸。但是我怎样才能在项目之间共享初始分布呢?

在此处输入图片说明

Mit*_*tch 5

我以前从未使用过SplitView,所以这对我来说是一个惊喜,但是在查看bugreports.qt.io类似问题后,我看到了这个

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
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)