只显示 Qt Qml Drawer 的一部分
Show only part of Qt Qml Drawer
我只想显示 QML 的一半 Drawer
。这个想法是在抽屉的可见部分保留一些重要信息,然后让用户显示包含更多信息的完整抽屉。
根据文档,我认为
position
属性应该适合这个:
Drawer {
modal: false
interactive: false
position: 0.5 // does not work
}
但是设置位置没有效果。是否可以只展示抽屉的一部分?
正如我的评论中提到的,您可能希望将您的概念彻底颠覆,让 Drawer
从其内容继承其大小,并更改内容,而不是硬编码其大小并操纵其位置。
这里有一个完整的例子来展示这个想法。抽屉包含一个包含“信息”和“额外信息”的 RowLayout - 额外信息的可见性通过交互切换,从而改变抽屉的大小,抽屉始终保持在 100% 打开位置,但会自动更改宽度。
import QtQuick 2.12
import QtQml 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
Window {
id: root
width: 640
height: 480
visible: true
Drawer {
id: drawer
height: root.height
// width automatically derived from RowLayout child's implicitWidth
onClosed: detailed.visible = false
RowLayout {
height: parent.height
spacing: 0
Rectangle {
id: detailed
color: "lightcyan"
Layout.fillHeight: true
Layout.preferredWidth: 200
visible: false // when not visible, this does not add to the RowLayout's implicitWidth
Text {
anchors {
centerIn: parent
}
text: "Extra Info\n Click to close"
}
MouseArea {
anchors {
fill: parent
}
onClicked: {
detailed.visible = false
}
}
}
Rectangle {
color: "lightpink"
Layout.fillHeight: true
Layout.preferredWidth: 200
Text {
anchors {
centerIn: parent
}
text: "Regular Info\n Click to open extra info"
}
MouseArea {
anchors {
fill: parent
}
onClicked: {
detailed.visible = true // toggling visibility automatically makes the Drawer wider
}
}
}
}
}
MouseArea {
id: mouse
anchors {
fill: parent
}
onClicked: {
drawer.open()
}
}
Text {
anchors {
centerIn: parent
}
text: "Click to open drawer"
}
}
我只想显示 QML 的一半 Drawer
。这个想法是在抽屉的可见部分保留一些重要信息,然后让用户显示包含更多信息的完整抽屉。
根据文档,我认为
position
属性应该适合这个:
Drawer {
modal: false
interactive: false
position: 0.5 // does not work
}
但是设置位置没有效果。是否可以只展示抽屉的一部分?
正如我的评论中提到的,您可能希望将您的概念彻底颠覆,让 Drawer
从其内容继承其大小,并更改内容,而不是硬编码其大小并操纵其位置。
这里有一个完整的例子来展示这个想法。抽屉包含一个包含“信息”和“额外信息”的 RowLayout - 额外信息的可见性通过交互切换,从而改变抽屉的大小,抽屉始终保持在 100% 打开位置,但会自动更改宽度。
import QtQuick 2.12
import QtQml 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
Window {
id: root
width: 640
height: 480
visible: true
Drawer {
id: drawer
height: root.height
// width automatically derived from RowLayout child's implicitWidth
onClosed: detailed.visible = false
RowLayout {
height: parent.height
spacing: 0
Rectangle {
id: detailed
color: "lightcyan"
Layout.fillHeight: true
Layout.preferredWidth: 200
visible: false // when not visible, this does not add to the RowLayout's implicitWidth
Text {
anchors {
centerIn: parent
}
text: "Extra Info\n Click to close"
}
MouseArea {
anchors {
fill: parent
}
onClicked: {
detailed.visible = false
}
}
}
Rectangle {
color: "lightpink"
Layout.fillHeight: true
Layout.preferredWidth: 200
Text {
anchors {
centerIn: parent
}
text: "Regular Info\n Click to open extra info"
}
MouseArea {
anchors {
fill: parent
}
onClicked: {
detailed.visible = true // toggling visibility automatically makes the Drawer wider
}
}
}
}
}
MouseArea {
id: mouse
anchors {
fill: parent
}
onClicked: {
drawer.open()
}
}
Text {
anchors {
centerIn: parent
}
text: "Click to open drawer"
}
}