2017-06-02 126 views
0

我想向JS公開一些C++對象。到目前爲止,我已經使用修飾符Q_OBJECTQ_POPERTYQ_INVOKABLE等正確暴露給QML的對象。這部分工作正常。在C++和QML之間共享(Q)WebChannel

當然,在C++方面我創建一個WebChannel,並與一些暴露的對象,如:

QWebChannel *channel = new QWebChannel(); 
channel->registerObject("test", prueba); 

在另一方面,我在那裏我使用WebEngineViewWebChannel一個QML文件。我想知道如何連接C++和QML之間的通道。

我見過很多例子,如this,但我不知道如何將它與QML集成。

有什麼想法?

+0

看看[這裏](https://stackoverflow.com/questions/43867334/how-to-pass-value-from-qml-to-javascript-in-qwebengineview]) – SourabhKus

回答

1

您不應在QML和C++中創建新的(Q)WebChannel。這樣,你會得到兩個不同的渠道。

如果你想訪問QML中的頻道,我建議構建一個WebChannel,這實際上是一個QQmlWebChannel並繼承QWebChannel

+0

讓我們假設我創建'QWebChannel'只能在C++中使用。我如何告訴QML使用該頻道?我看到的所有文檔和示例對我來說都很模糊。 – tesluka

+0

您可以使用['setContextProperty'](http://doc.qt.io/qt-5/qqmlcontext.html#setContextProperty)將對象傳遞給qml,但您應該考慮創建'QQmlWebChannel',以便能夠訪問QML中的所有屬性。 – m7913d