在Qt5中,Q_INVOKABLE是否需要从QML调用公共QObject函数?

时间:2016-02-11 09:39:17

标签: c++ qt qml qt5

我刚刚意识到我几乎可以调用暴露给QML的对象的任何函数。现在我对Q_INVOKABLE感到好奇。 Qt5 docs状态:

  

[...]任何QML代码都可以访问以下成员   QObject派生类的实例:

     
      
  • 属性

  •   
  • 方法(提供它们是公共广告位或标记为   Q_INVOKABLE)

  •   
  • 信号
  •   

Since Qt5(在C ++中)我可以像插槽一样调用QObject的任何公共函数,即我不必将它们声明为“公共插槽”。这是否意味着我可以从QML调用任何方法?我无法在文档中找到任何内容。

1 个答案:

答案 0 :(得分:8)

是的,您必须使用Q_INVOKABLE标记QObject的功能,除非它是public slot才能从QML调用它。

Q_INVOKABLE和slots关键字都会使用Qt meta-system注册您的函数。不同之处在于,使用Q_INVOKABLE ,您可以返回值