QML文件包含 - 或一个单片文件(结构QML代码)?

时间:2013-10-23 12:13:15

标签: qml qt5.1

这是一个QML新手问题。从table view example我有这样的代码:

Column {
        anchors.top: toolbar.bottom
        .....

        TabView {
            id:frame
            ......

            Tab {
                title: "XmlListModel"
                ...
            }
            Tab { ...

由于qml文件很长,我想知道我是否可以嵌套qml文件

Column {
        anchors.top: toolbar.bottom
        .....

        TabView {
            id:frame
            ......

            <include tab 1 qml file>   <-- possible ????? -------
            <include tab 2 qml file>

如果这样的include不可能,那么QML程序员如何构建他的代码呢?即使在simple example中,已有太多行来处理恕我直言。

- 编辑 -

在答案之后我发现这个值得注意:

  1. http://qt-project.org/doc/qt-5.0/qtqml/qtqml-syntax-directoryimports.html
  2. How to reuse code at QML

1 个答案:

答案 0 :(得分:5)

不,你不能做“包括”,但你可以将东西放入命名对象。

例如,拿你的Tab#1文件,把它放在一个名为“Tab1”的文件中(或者一个更好的名称,它与它实际显示的内容有关;我不知道如此无法帮助你的名字)

所以在Tab1.qml中我们有:

import ...
Tab {
  id: tab1
  ...
}

然后在主文件中,您现在可以引用它:

...
Tabview {
   id: frame
   Tab1 { id: tab1 }
}

你会注意到我再次为它添加了一个id,因为父母不会 能够在没有它的情况下引用孩子内的id。 (它们可以是不同的名字,但不要这样做。动物会哭。实际上,你也可以忽略孩子的身份,但许多人喜欢能够在文件中看到它。)