2016-01-28 1 views
0

Я очень новичок в QML и довольно приправлен C++. Я пытаюсь пройти некоторые примеры QML, чтобы попытаться изучить его.Добавление пользовательских свойств в QML-тип

Я играл с управлением TumblerColumn (из примеров) и в основном пытался установить модель для установки года. он идет что-то вроде:

TumblerColumn { 
    id: yearColumn 
    width: characterMetrics.width * 4 + tumbler.delegateTextMargins 

    model: ListModel { 
     Component.onCompleted: { 
      for (var i = 2000; i < 2100; ++i) { 
       append({value: i.toString()}); 
      } 
     } 
    } 
    onCurrentIndexChanged: tumblerDayColumn.updateModel() 
} 

Теперь, я сделал изменения, как:

TumblerColumn { 
    id: yearColumn 
    width: characterMetrics.width * 4 + tumbler.delegateTextMargins 

    property int startYear: 2000 
    property int endYear: 3000 

    model: ListModel { 
     Component.onCompleted: { 
      for (var i = startYear; i < endYear; ++i) { 
       append({value: i.toString()}); 
      } 
     } 
    } 
    onCurrentIndexChanged: tumblerDayColumn.updateModel() 
} 

Это возвращает ошибку:

ReferenceError: startYear is not defined

Как я могу определить эти чтения постоянные свойства такого QML.

ответ

3

startYear и endYear не в этой области. Попробуйте это

TumblerColumn { 
    id: yearColumn 
    width: characterMetrics.width * 4 + tumbler.delegateTextMargins 

    property int startYear: 2000 
    property int endYear: 3000 

    model: ListModel { 
     Component.onCompleted: { 
      for (var i = yearColumn.startYear; i < yearColumn.endYear; ++i) { 
       append({value: i.toString()}); 
      } 
     } 
    } 
    onCurrentIndexChanged: tumblerDayColumn.updateModel() 
} 
+0

Спасибо! Это действительно проблема! – Luca

0

Попробуйте сделать новый QtObject в QML и добавить геттеры и сеттеры

Item { 
    QtObject { 
     id : readOnlyProperties 
     property int startYear : 2000 
     property int endYear : 3000 
    } 

    function getStartYear() {return readOnlyProperties.startYear ;} 
    function settartYear (_startYear) { readOnlyProperties.startYear = _startYear; } 

    // the same getter and setter for endYear 
} 

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

  • Нет связанных вопросов^_^