簡體   English   中英

在Qt5中,Q_INVOKABLE是否需要從QML調用公共QObject函數?

[英]Is Q_INVOKABLE needed to invoke a public QObject function from QML at all in Qt5?

我剛剛意識到我幾乎可以調用暴露給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 可以返回值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM