Допустим, у меня есть два перекрывающихся виджета QML, например, две кнопки. В обычном Qt для этого есть QWidget.raise_()
и QWidget::raise()
. Есть ли что-то подобное в QML?
Как я могу поднять виджет QML наверх?
9 августа 2021 в 05:53
75
1
Ответы (1)
9 августа 2021 в 06:02
Чтобы показать элемент поверх другого, достаточно, чтобы свойство z
было больше другого.
import QtQuick 2.15
import QtQuick.Controls 2.15
ApplicationWindow {
id: window
width: 640
height: 480
visible: true
Rectangle {
id: rect1
width: 0.7 * parent.width
height: 0.6 * parent.height
color: "red"
}
Rectangle {
id: rect2
width: 0.7 * parent.width
height: 0.6 * parent.height
anchors.right: parent.right
anchors.bottom: parent.bottom
color: "blue"
z: 1
}
Timer {
interval: 500
running: true
repeat: true
onTriggered: {
if (rect1.z == 0) {
rect1.z = 1;
rect2.z = 0;
} else {
rect1.z = 0;
rect2.z = 1;
}
}
}
}
Я думаю, следует заметить, что
z
работает только для одноуровневых элементов.@folibis Я предполагаю, что ОП знает об этом, поскольку повышение () также работает для братьев и сестер QWidget.
вы правы, но в любом случае, по моему опыту, это самая распространенная ошибка с
z
, поэтому я всегда стараюсь сосредоточиться на этом.Они все братья и сестры.
Это данные модели, поэтому прямых ссылок нет, и я не могу определить, сколько их.