[英]Adding custom properties to QML type
I am very new to QML and fairly seasoned with C++. 我对QML非常陌生,并且对C ++相当了解。 I have been trying to go through some QML examples to try and learn it.
我一直在尝试通过一些QML示例来尝试和学习它。
I was playing around with the TumblerColumn
control (from examples) and basically trying to set the model to set the year. 我在玩
TumblerColumn
控件(来自示例),并且基本上试图设置模型来设置年份。 it goes something like: 它像这样:
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()
}
Now, I made a change like: 现在,我进行了如下更改:
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()
}
This returns an error: 这将返回错误:
ReferenceError: startYear is not defined
ReferenceError:startYear未定义
How can I define these readonly constant properties for such a QML element. 如何为此类QML元素定义这些只读常量属性。
startYear
and endYear
aren't in that scope. startYear
和endYear
不在该范围内。 Try this 尝试这个
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()
}
Try make new QtObject
in QML
and add getters and setters 尝试在
QML
制作新的QtObject
并添加getter和setter
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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.