2016-01-31 4 views
0

Я только начал играть с QML и имею вид, где у меня есть куча компонентов следующим образом:Как разбить мой 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 никогда не встречается. Я не уверен, правильно ли я это делаю.

[EDIT] 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" 
    } 
} 

[END EDIT]

Что такое правильный способ разделить QML код на несколько файлов?

ответ

3

Ваш файл DateTumblerView.qml должен выглядеть следующим образом:

ControlView { 
    // More definition follows 
} 

И вы бы использовать его как это:

property Component dateTumbler: DateTumblerView {} 

Или:

Component { 
    id: dateTumbler 

    DateTumblerView {} 
} 

Или, если вы хотите использовать он непосредственно:

DateTumblerView {} 

Это почти то же самое, что и в случае, когда ваш код был только в одном файле. Каждый раз, когда вы делаете <Type> {}, вы наследуете этот тип и можете устанавливать или добавлять новые свойства, функции и подкомпоненты. Разница в том, что она находится в отдельном файле, имеет определенное имя (имя файла) и вы можете повторно использовать этот код столько раз, сколько хотите.

Для получения дополнительной информации см. Defining Custom QML Types for Re-use.

+0

Спасибо за ответ. Я попытался это сделать, и он жалуется, что ControlView не является типом. Я добавляю определение ControlView к своему оригинальному сообщению – Luca

+0

Не обращайте внимания на мой последний комментарий ... это произошло потому, что я не могу писать. нужен мой первый кофе ... – Luca

Смежные вопросы