QML 从 SplitView 读取和设置 SplitHandle 中的属性

问题描述 投票:0回答:1

在下面的示例中,如何读取和设置 rect1 和 rect2 中的属性 dummy?在这种情况下,我不确定如何从加载的组件中读取属性。

import QtQuick 2.15
import QtQuick.Controls 2.15

SplitView {
    id: splitView
    anchors.fill: parent

    handle: Rectangle {
        id: handleRect
        property bool dummy: false
        implicitWidth: 4
        implicitHeight: 4
        color: SplitHandle.pressed ? "#81e889"
            : (SplitHandle.hovered ? Qt.lighter("#c2f4c6", 1.1) : "#c2f4c6")

        Rectangle: {
          visible: dummy
          ...
        }
    }

    Rectangle {
        id: rect1
        implicitWidth: 150
        color: "#444"
        Component.onCompleted: {
            handleRect.dummy = true // Does not work
        }
    }

    Rectangle {
        id: rect2
        implicitWidth: 50
        color: "#666"
    }
}

由于 TypeError:无法读取未定义的属性“dummy”,因此在 rect1 或 2 中使用handleRect.dummy 不起作用。

qt qml splitview
1个回答
0
投票

因为您永远无法保证顺序,所以您不能说

SplitView.handle
将在您的
SplitView
孩子之前存在。因此,无法保证
Component.onCompleted
中的代码能够正常工作。

相反,如果您要泡沫化您的财产,例如

SplitView {
    id: splitView
    property bool dummy: false
    handle: Rectangle { /* ... */ }
    Rectangle { id: rect1 /* ... */ }
    Rectangle { id: rect2 /* ... */ }
}

您可以保证 SplitView 的子级和句柄都可以读取/写入它。

您可以在线尝试!

© www.soinside.com 2019 - 2024. All rights reserved.