[英]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.