当连接的 QML 属性更改时C++对象不会获取值

C++ object doesn't get value when connected QML property changes

本文关键字:对象 C++ 获取 连接 QML 属性      更新时间:2023-10-16

我在属性" step"中具有C 的组件:

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

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

TextInput {
    text: cppcomp.step
}

它在一个方向上起作用。QML获取初始值。但是,当我更改QML的值时,我的setStep方法未调用。

仅在我设置C 组件的属性时,它才能明确设置在Accepted中:

TextInput {
    text: cppcomp.step
    onAccepted: {
        cppcomp.step = step.text
    }
}

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

您的代码应该很好地工作,除非可能无法定义step。如果要到达TextInput属性,只需省略其id即可。要确认您的想法正常工作,请运行此代码:

    QtObject { //A bare QObject with one property
        id:cppcomp
        property string step: "Working"
    }
    TextInput { 
        text: cppcomp.step+"!"
        onAccepted: cppcomp.step = text
    }

每次按 Enter TextInput焦点时,应出现新的!

(用QT 5.7测试)