2014-09-12 110 views
1

我有一个Webview的Qt项目,它正在加载一个HTML文件,它是Javascript文件。现在我想通过JavaScript调用Qt端的函数。从Javascript代码调用Qt函数

因此,具有以下的Qt功能:

void MainWIndow::myFunction(angle) 
{ 
    qDebug() << angle; 
} 

我想从JavaScript端调用它:

function angleChanged(angle){ 
    Qt.MainWIndow::myFunction(angle); 
} 

我怎样才能做到这一点?

回答

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); 
} 
+0

谢谢you.How我可以使用''populateJavaScriptWindowObject addToJavaScriptWindowObject()'方法()'让Qt来JavaScriptWindowObject – Matthias 2014-09-13 07:47:43

+0

。 – 2014-09-13 09:08:25

+0

Thx会尽快尝试 – Matthias 2014-09-13 12:27:41