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



我刚刚意识到,我几乎可以调用任何暴露给QML的对象函数。现在我对Q_INVOKABLE很好奇。Qt5 文档指出:

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

  • 性能

  • 方法(前提是它们是公共插槽或标记Q_INVOKABLE(

  • 信号

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

是的,你必须用Q_INVOKABLE标记你的QObject函数,除非它是一个public slot,以便能够从QML调用它。

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

相关内容

  • 没有找到相关文章

最新更新