Как я могу поднять виджет QML наверх?

avatar
linux_kettle
9 августа 2021 в 05:53
75
1
1

Допустим, у меня есть два перекрывающихся виджета QML, например, две кнопки. В обычном Qt для этого есть QWidget.raise_() и QWidget::raise(). Есть ли что-то подобное в QML?

Источник

Ответы (1)

avatar
eyllanesc
9 августа 2021 в 06:02
3

Чтобы показать элемент поверх другого, достаточно, чтобы свойство 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;
            }
        }
    }

}
folibis
9 августа 2021 в 07:00
0

Я думаю, следует заметить, что z работает только для одноуровневых элементов.

eyllanesc
9 августа 2021 в 07:05
0

@folibis Я предполагаю, что ОП знает об этом, поскольку повышение () также работает для братьев и сестер QWidget.

folibis
9 августа 2021 в 08:42
0

вы правы, но в любом случае, по моему опыту, это самая распространенная ошибка с z, поэтому я всегда стараюсь сосредоточиться на этом.

linux_kettle
11 августа 2021 в 05:46
0

Они все братья и сестры.

linux_kettle
11 августа 2021 в 05:46
0

Это данные модели, поэтому прямых ссылок нет, и я не могу определить, сколько их.