我有一个带有 Webview 的 Qt 项目,它正在加载一个 HTML 文件,该文件是 Javascript 文件。现在我想通过 JavaScript 在 Qt 端调用一个函数。
因此,具有以下 Qt 函数:
void MainWIndow::myFunction(angle)
{
qDebug() << angle;
}
我想从 JavaScript 端调用它:
function angleChanged(angle){
Qt.MainWIndow::myFunction(angle);
}
我该怎么做?
最佳答案
如果 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);
}
关于javascript - 从 Javascript 代码调用 Qt 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25814026/