连接QML属性更改时,C ++对象无法获取值

时间:2016-12-23 11:07:04

标签: c++ qml qt5

我在C ++中有一个带有属性的组件" step":

class cppcomponent   : public QObject
...
Q_PROPERTY(QVariant step READ getStep WRITE setStep NOTIFY stepChanged)

我尝试将此属性连接到QML。

TextInput {
    text: cppcomp.step
}

它在一个方向上工作。 QML获得初始值。但是,当我更改QML中的值时,不会调用setStep方法。

仅当我在onAccepted:

中显式设置C ++组件的属性时,它才有效
TextInput {
    text: cppcomp.step
    onAccepted: {
        cppcomp.step = step.text
    }
}

我真的必须明确地设置它吗?

1 个答案:

答案 0 :(得分:1)

您的代码应该可以正常运行,但可能未定义step。如果您想访问TextInput属性,只需省略其id即可。要确认您的想法是否正常,请运行以下代码:

    QtObject { //A bare QObject with one property
        id:cppcomp
        property string step: "Working"
    }

    TextInput { 
        text: cppcomp.step+"!"
        onAccepted: cppcomp.step = text
    }

每次在TextInput聚焦时按输入,都会显示新的!

(用Qt 5.7测试)