qt与js/html进行值传递
ps:由于想要js去读取本地的一个文件,但是由于qt的QWebView不支持ActiveX控件,而QAxWidget虽然支持ActiveX控件,但是效果和用法感觉没有QWebView那么好,所以,我就将其改造成了,由js发送一个消息给qt进行数据的读取,然后将该数据发送给js。这样就不需要ActiveX控件的支持了
具体的操作如下:
1.头文件的内容
public slots:
//将object对象发送给js
void populateJavaScriptWindowObject();
//给js发送文本内容
void on_pushButton_clicked();
//js反馈信息
void onCall(QString strText);
2.实现文件
void MainWindow::populateJavaScriptWindowObject()
{
ui->webView->page()->mainFrame()->addToJavaScriptWindowObject(QString("mywebkit"),this);
}
void MainWindow::on_pushButton_clicked()
{
QString strVal = QString("OnMsgFromQt("%1");").arg(ui->text->text());
ui->webView->page()->mainFrame()->evaluateJavaScript(strVal);
}
void MainWindow::onCall(QString strText)
{
ui->text->setText(strText);
}
//构造函数中添加如下代码
ui->webView->setUrl(QUrl("file:///D:/text.html"));
ui->webView->show();
connect(ui->webView->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(populateJavaScriptWindowObject()));
3.测试的js文本
function SendToQt()
{
var textArray;
textArray = document.getElementsByName("testText");
window.mywebkit.onCall(textArray[0].value);
}
function OnMsgFromQt(qtText)
{
var textArray;
textArray = document.getElementsByName("testText");
textArray[0].value = qtText;
}
Text: