我刚刚意识到我几乎可以调用暴露给QML的对象的任何函数 . 现在我对Q_INVOKABLE感到好奇 . Qt5 docs状态:
[...]任何QML代码都可以访问QObject派生类的实例的以下成员:属性方法(提供它们是公共插槽或标记为Q_INVOKABLE)信号
Since Qt5(在C中)我可以像插槽一样调用QObject的任何公共函数,即我不必将它们声明为'public slot' . 这是否意味着我可以从QML调用任何方法?我无法在文档中找到任何内容 .
是的,您必须使用 Q_INVOKABLE 标记QObject的功能,除非它是 public slot ,以便能够从QML调用它 .
Q_INVOKABLE
public slot
Q_INVOKABLE和slots关键字都使用 Qt meta-system 注册您的函数 . 不同之处在于使用Q_INVOKABLE可以返回值 .
Qt meta-system
1 回答
是的,您必须使用
Q_INVOKABLE
标记QObject的功能,除非它是public slot
,以便能够从QML调用它 .Q_INVOKABLE和slots关键字都使用
Qt meta-system
注册您的函数 . 不同之处在于使用Q_INVOKABLE可以返回值 .