QML如何根据条件创建不同的类型

时间:2018-08-29 06:22:55

标签: qt qml qt5

我想知道基于我的QML代码内部条件创建矩形,文本或按钮的最佳方法是什么。

这是一个伪代码:

    import QtQuick 2.0

    Item{
        property string name = "rect" or "text" or "button"
        id:root

        if (name === "rect")
        Rectangle {
            //properties
            parent: root
        }

        else if (name === "text")
        Text {
            //properties
            parent: root
        }

        else if (name === "button")
        Button {
            //properties
            parent: root
        }
    }

2 个答案:

答案 0 :(得分:3)

尝试使用Loader

Loader {
    property bool shouldBeText
    Component { id: rect; Rectangle {}}
    Component { id: text; Text {}}
    sourceComponent: shouldBeText ? text : rect
}

答案 1 :(得分:0)

您可以使用回答“ derM”的装载程序,也可以“创建”所有项目并设置可见性:

Item{
    property string name = "rect" or "text" or "button"
    id:root

    Rectangle {
        //properties
        visible: root.name === "rect"
    }

    Text {
        //properties
        visible: root.name === "text"
    }

    Button {
        //properties
        visible: root.name === "button"
    }
}