我刚刚意识到,我几乎可以调用任何暴露给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 可以返回值。