如何将QML代码拆分为多个文件?

时间:2016-01-31 20:12:31

标签: qt qml qtquick2 qtquickcontrols

我刚刚开始使用QML,并且有一个视图,其中有一堆组件如下:

Window {
    ....
    property Component dateTumbler: ControlView {
        // Definition follows
    }

    property Component timeTumbler: ControlView {
       // More definition follows
    }

    // More controls
}

这使得主QML文件编辑和维护非常冗长且繁琐。我试着把它分成不同的文件,如下所示:

// DateTumblerView.qml
component: DateTumblerView { // Not sure how to inherit here..
    // Definition here
}

我试图像这样使用它:

property component dateTumbler: DateTumblerView {}

然而,这永远不会奏效,永远找不到DateTumblerView。我不确定我是否正确这样做。

[编辑] ControlView定义如下:

import QtQuick 2.2
import QtQuick.Controls 1.1
import QtMultimedia 5.5

Rectangle {
    id: view
    property bool darkBackground: false

    Text {
        id: textSingleton
    }

    SoundEffect {
        id: playCalSound
        source: "qrc:/sound/test.wav"
    }
}

[结束编辑]

将QML代码拆分为多个文件的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

您的DateTumblerView.qml文件应如下所示:

ControlView {
   // More definition follows
}

你会像这样使用它:

property Component dateTumbler: DateTumblerView {}

或者:

Component {
    id: dateTumbler

    DateTumblerView {}
}

或者如果你想直接使用它:

DateTumblerView {}

与您的代码只在一个文件中时几乎相同。无论何时执行<Type> {},您都可以继承该类型,并可以设置或添加新属性,函数和子组件。区别在于它位于单独的文件中,具有特定名称(文件名),您可以根据需要重复使用该代码。

有关详细信息,请参阅Defining Custom QML Types for Re-use