向 QML 类型添加自定义属性
Adding custom properties to QML type
我是 QML 的新手,对 C++ 相当熟悉。我一直在尝试通过一些 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()
}
这returns一个错误:
ReferenceError: startYear is not defined
如何为这样的 QML 元素定义这些只读常量属性。
尝试在 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
}
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()
}
我是 QML 的新手,对 C++ 相当熟悉。我一直在尝试通过一些 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()
}
这returns一个错误:
ReferenceError: startYear is not defined
如何为这样的 QML 元素定义这些只读常量属性。
尝试在 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
}
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()
}