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

Qt 如何将QML代码拆分为多个文件?,qt,qml,qtquick2,qtquickcontrols,Qt,Qml,Qtquick2,Qtquickcontrols,我刚刚开始使用QML,在这里我有一系列组件,如下所示: Window { .... property Component dateTumbler: ControlView { // Definition follows } property Component timeTumbler: ControlView { // More definition follows } // More controls } //

我刚刚开始使用QML,在这里我有一系列组件,如下所示:

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

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

    // More controls
}
// DateTumblerView.qml
component: DateTumblerView { // Not sure how to inherit here..
    // Definition here
}
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文件非常长,编辑和维护起来非常麻烦。我尝试将其分为不同的文件,如下所示:

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

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

    // More controls
}
// DateTumblerView.qml
component: DateTumblerView { // Not sure how to inherit here..
    // Definition here
}
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"
    }
}
我试着这样使用它:

property component dateTumbler: DateTumblerView {}
ControlView {
   // More definition follows
}
property Component dateTumbler: DateTumblerView {}
但是,这永远不起作用,而且从未找到
DateTumblerView
。我不确定我这样做是否正确

[编辑] ControlView的定义如下:

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

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

    // More controls
}
// DateTumblerView.qml
component: DateTumblerView { // Not sure how to inherit here..
    // Definition here
}
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代码拆分为多个文件的正确方法是什么?

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

property component dateTumbler: DateTumblerView {}
ControlView {
   // More definition follows
}
property Component dateTumbler: DateTumblerView {}
你可以这样使用它:

property component dateTumbler: DateTumblerView {}
ControlView {
   // More definition follows
}
property Component dateTumbler: DateTumblerView {}
或:

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

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


有关更多详细信息,请参阅。

谢谢您的回答。我试过这样做,但它抱怨ControlView不是一种类型。我将ControlView的定义添加到我的原始帖子中,忽略我的最后一条评论…这是因为我无法拼写。需要我的第一杯咖啡。。。