2013-01-03 233 views
2

我需要訪問未標記爲Q_INVOKABLE或Q_SLOTS的函數。 Qt腳本模塊具有名爲defaultPrototype的機制。我想知道在QML中是否可能?QML訪問非可調用函數

我看到QtDevDays presentatin QtDD12 - QtQuick under the hood - Thomas McGuire並在18分鐘托馬斯顯示純粹的QML部件應用程序。我認爲如果不將一些不可調用的函數導出/暴露給腳本環境,就無法實現它。

QML中有沒有類似於defualtrototype的機制?

回答

2

QML在引擎蓋下使用Qt Script,所以使用默認的原型機制是完全可能的。唯一的問題是獲取聲明引擎的腳本引擎,因爲它們不是那麼明顯的API。請查看libkdeclarative中的code,尤其是KDeclarative::initialize(),這是可行的做法。

+1

其實它部分工作。 Prototype不適用於由QmlEngine實例化的對象,但適用於在JavaScript中實例化的對象。 – Nightmare