Qt qml动态小部件的正确体系结构是什么?

Qt qml动态小部件的正确体系结构是什么?,qt,qml,Qt,Qml,这个问题很难解释。但看看下面的图片: 例如,存在一个列表小部件,当接收到悬停状态时,该小部件中的项目会动态地更改内容。为简单起见,项目内容取决于某组布尔值 使用QWidgets,当一些信号升高时,可以通过检查bool值和显示/隐藏依赖组件来实现它的简单性 但它是如何通过qml实现的呢 正如我正确理解的那样,qml gui是一种静态gui,我应该设置不同的gui进行切换。但在所描述的示例中,我收到了组合爆炸。我不确定我是否正确回答了您的问题,但让我们从示例开始 ListModel {

这个问题很难解释。但看看下面的图片:

例如,存在一个列表小部件,当接收到悬停状态时,该小部件中的项目会动态地更改内容。为简单起见,项目内容取决于某组布尔值

使用QWidgets,当一些信号升高时,可以通过检查bool值和显示/隐藏依赖组件来实现它的简单性

但它是如何通过qml实现的呢


正如我正确理解的那样,qml gui是一种静态gui,我应该设置不同的gui进行切换。但在所描述的示例中,我收到了组合爆炸。

我不确定我是否正确回答了您的问题,但让我们从示例开始

 ListModel {
    id: listModel

    ListElement {
        name: "John"
        age: 32
        gender: "male"
    }
    ListElement {
        name: "Kate"
        age: 23
        gender: "female"
    }
}

ListView {
    anchors.fill: parent

    model: listModel
    spacing: 5

    delegate: Rectangle {
        color: "#24F5F2"

        width: parent.width
        height: 50

        Text {
            id: nameText
            anchors.top: parent.top
            anchors.left: parent.left
            anchors.right: parent.right
            text: name
        }

        Text {
            id: ageOrGenderText
            anchors.bottom: parent.bottom
            anchors.left: parent.left
            anchors.right: parent.right
            text: gender
        }

        MouseArea {
            anchors.fill: parent
            hoverEnabled: true

            onEntered: {
                ageOrGenderText.text = age
            }

            onExited: {
                ageOrGenderText.text = gender
            }
        }
    }
}
此外,您还可以创建一个单独的布尔属性,并在“输入/退出”时将其设置为true/false,并对该属性进行QML绑定

property bool hovered: false

Text {
    id: textItem
    anchors.bottom: parent.bottom
    anchors.left: parent.left
    anchors.right: parent.right
    text: hovered ? "age" : "gender" // or CppBackend.GetValue(hovered)
}

MouseArea {
    anchors.fill: parent
    hoverEnabled: true

    onEntered: {
        textItem = true;
    }

    onExited: {
        textItem = false;
    }
}