2014-09-12 115 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