首页 文章

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

提问于
浏览
4

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

[...]任何QML代码都可以访问QObject派生类的实例的以下成员:属性方法(提供它们是公共插槽或标记为Q_INVOKABLE)信号

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

1 回答

  • 8

    是的,您必须使用 Q_INVOKABLE 标记QObject的功能,除非它是 public slot ,以便能够从QML调用它 .

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

相关问题