在 SplitView 中甚至 space 的初始分布
Even initial distribution of space in a SplitView
我正在使用 SplitView
编写 QML 应用程序。我希望初始 space 在项目之间均匀分布,但一个项目占据了所有 space.
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
}
}
}
}
我可以拖动 space 之间的分隔符来实现我想要的分布,并且满足最小尺寸。但是我怎样才能让初始分布在项目之间共享?
我以前从未使用过SplitView
,所以这对我来说是一个惊喜,但是在浏览 bugreports.qt.io for similar issues, I saw this 之后:
SplitView is not really a layout, so we will not support all the properties found in the attached Layout property. Just set width and height directly on the items when using 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
}
}
}
}
我正在使用 SplitView
编写 QML 应用程序。我希望初始 space 在项目之间均匀分布,但一个项目占据了所有 space.
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
}
}
}
}
我可以拖动 space 之间的分隔符来实现我想要的分布,并且满足最小尺寸。但是我怎样才能让初始分布在项目之间共享?
我以前从未使用过SplitView
,所以这对我来说是一个惊喜,但是在浏览 bugreports.qt.io for similar issues, I saw this 之后:
SplitView is not really a layout, so we will not support all the properties found in the attached Layout property. Just set width and height directly on the items when using 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
}
}
}
}