QT5:多次实例化相同的QML组件

时间:2018-09-15 09:09:03

标签: qml qt5

我想创建组件模板,这意味着我在一个单独的QML文件中定义了我自己的MyButton类型,并且我还想定义几个单例实例,例如:

Predefined.qml:
pragma Singleton
[...]

property MyButton quitButton : quitButtonItem 
MyButton {
    id: quitButtonItem
    text: qsTr("Quit")
    imagesource : "qrc:/icons/quit.png"
}

然后将其用作:

Predefined { id: predefined }

Rectangle {
    predefined.quitButton {
        onClicked: console.log ("quit pressed.");
        anchors.bottom : parent.bottom
        anchors.horizontalCenter : parent.horizontalCenter
    }
}

a。)我不想为此使用装载机->过度杀伤 b。)确实不想将想要定义的组件定义为我的QML文件 克隆(例如QuitButton.qml,BackButtonQml等)

有什么想法要完成吗? 谢谢

1 个答案:

答案 0 :(得分:1)

无法完成。

在没有Loader的情况下从QML声明式实例化对象的唯一方法是为每个组件创建一个新文件。

对于您的用例,我的建议只是创建文件。 另外,您似乎正在做某种导航栏。将其统一在一个组件中怎么办?

我看到两种方法:在您的所有应用程序中使用单个全局导航栏(例如,在ApplicationWindow的{​​{1}}中),或者在您实现您的应用程序时使用类似header的通用类型栏,然后直接从中继承您的实际内容。 我个人采用了第一个解决方案。