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