简体   繁体   English

将自定义属性添加到QML类型

[英]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. startYearendYear不在该范围内。 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM