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

2024-05-14

我刚刚意识到我可以调用暴露于 QML 的对象的几乎任何函数。现在我对 Q_INVOKABLE 很好奇。 Qt5docs http://doc.qt.io/qt-5/qtqml-cppintegration-exposecppattributes.html state:

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

  • 特性

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

  • Signals

从Qt5开始 https://wiki.qt.io/Qt-5Features(在 C++ 中)我可以像槽一样调用 QObject 的任何公共函数,即我不必将它们声明为“公共槽”。这是否意味着我可以从 QML 调用任何方法?我在文档中找不到任何内容。


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

Q_INVOKABLE 和 slot 关键字都注册您的函数Qt meta-system。区别在于使用Q_INVOKABLE你可以返回值.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Qt5 中,是否需要 Q_INVOKABLE 来从 QML 调用公共 QObject 函数? 的相关文章