[英]Calling Qt slot from JavaScript
在QWebEngine中,您可以使用QWebChannel以便與JS通信
創建代理對象以通過JS與Qt通信
// This Object will be registered in the web channel
class MyJSObj : public QObject
{
Q_OBJECT
public:
MyJSObj(QObject * poParent = Q_NULLPTR);
Q_INVOKABLE int foo(); // call from JS
};
在您的cpp代碼中
// Create proxy object
m_poMyJSObj = new MyJSObj(this);
// Create channel
m_poWebView = new QWebEngineView(this);
QWebChannel * poChannel = new QWebChannel();
m_poWebView->page()->setWebChannel(poChannel);
// Register your proxy object
const QString oJSObjectName = "mJSQtObject"; // use in JS to call Qt functions
poChannel->registerObject(oJSObjectName, m_poMyJSObj);
在JS中
new QWebChannel(qt.webChannelTransport, function (channel) {
// now you retrieve your object
var JSQtObject = channel.objects.mJSQtObject;
// call Qt function from JS
var qtValue = JSQtObject.foo();
});
請注意,您將必須在HTML端包含qwebchannel.js
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.