我有一个带有Webview的Qt项目,它正在加载一个Javascript文件的HTML文件。现在我想通过JavaScript在Qt端调用一个函数。
所以,具有以下Qt功能:
void MainWIndow::myFunction(angle)
{
qDebug() << angle;
}
我想从JavaScript方面调用它:
function angleChanged(angle){
Qt.MainWIndow::myFunction(angle);
}
我该怎么做?
答案 0 :(得分:1)
如果Qt
是JavaScriptWindowObject
,则应使用:
在你的Qt代码后面(MainWIndow
类):
MainWIndow.h
档案:
public slots:
void populateJavaScriptWindowObject();
void myFunction(int angle);
MainWIndow.cpp
文件:
//in constructor
connect(ui->webView->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()),
this, SLOT(populateJavaScriptWindowObject()));
//in populateJavaScriptWindowObject SLOT
void MainWindow::populateJavaScriptWindowObject()
{
QWebFrame *frame = ui->webView->page()->mainFrame();
frame->addToJavaScriptWindowObject("Qt", this);
}
在您的Javascript代码中:
function angleChanged(angle) {
Qt.myFunction(angle);
}