繁体   English   中英

Q_INVOKABLE 在 QT 内的所有 getter 和 setter 函数上?

[英]Q_INVOKABLE on all getters and setters functions inside QT?

我的 class 中有一些字段。 我想在所有这些字段上都有Q_PROPERTY并且还有 getter 和 setter。

私有字段float pwm7Min的示例,我可以使用此代码获取我的 getter 和 setter 以及属性。

Q_PROPERTY(float pwm7Min READ getPwm7Min WRITE setPwm7Min NOTIFY pwm7MinChanged)

这是由 QT 中的自动生成的。

在此处输入图像描述

问题:

但我想Q_INVOKABLE所有的 setter 和 getter。 有没有办法通过使用 QT Designer 在 QT 中做到这一点,还是我必须自己手动实现它们?

那是因为我遇到了这个错误,解决方案是Q_INVOKABLE 但是我的.cpp文件有超过 1000 行代码,并且只包含 getter 和 setter。

 QMetaObject::invokeMethod: No such method IOcalibration::setInputCapture0Max(float)

它源于这个问题: QMetaObject::invokeMethod: No such method when using inheritance

如果您声明Q_PROPERTY ,您可以通过 QML 中的属性名称访问QML ,您不需要将任何 setter 或 getter 声明为Q_INVOKABLE ,因为它已经在元 ZA8CFDE6331BD4B62669 系统中注册的属性。

如果你有

Q_PROPERTY(float pwm7Min READ getPwm7Min WRITE setPwm7Min NOTIFY pwm7MinChanged)

然后只需通过 qml 访问

pwm7Min = 0.5

使用 setter/getter 是错误的,这就是 Qt Creator 不提供该选项的原因。

您只能使用QMetaObject::invokeMethod调用 Qt 元 object 系统已知的方法,即slot函数和Q_INVOKABLE函数。

将 getter 和 setter 注册到moc的最简单方法是在 header 文件中添加一个单独的public scope 关键字slots

public slots:
    void setInputCapture0Max(float inputCapture0Max);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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