#include <QAxWidget>
#include <QAxWidget>
#include <QWebFrame>
#include <QDebug>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QMessageBox>
#include <QDir>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
showMaximized();
showMaximized();
webView = new QWebView(this->centralWidget());
webView->load(QUrl("./test.html"));
webView->setMaximumWidth(200);
QPushButton *btClose = new QPushButton(this);
btClose->setText(QString::fromLocal8Bit("调用html页面接口"));
btClose->setMaximumWidth(150);
QVBoxLayout *vLayout = new QVBoxLayout();
vLayout->addWidget(webView);
vLayout->addWidget(btClose);
connect(webView, SIGNAL(loadFinished(bool)), this, SLOT(slotLoadFinished(bool)));
connect(btClose, SIGNAL(clicked()), this, SLOT(slotSetToWeb()));
}
void MainWindow::slotLoadFinished( bool )
{
// 类对象 添加到 html页面。
webView->page()->mainFrame()->addToJavaScriptWindowObject("MainWindow", this);
}
void MainWindow::submit_webcb( const QString &userInfo )
{
QMessageBox::information(this,QString::fromLocal8Bit("提示"),QString::fromLocal8Bit("本地接口调用成功"),QMessageBox::Ok);
}
void MainWindow::slotSetToWeb()
{
QString userInfo ="111111111";
webView->page()->mainFrame()->evaluateJavaScript(QString("setUserInfo('%1')").arg(userInfo));
}
<!DOCTYPE html>
<html>
<head>
<title> tree</title>
<script type="text/javascript">
function setUserInfo(userInfo) { // qt版调用本地接口
alert("我是 html 接口");
}
function submitUserInfo() { // qt版调用本地接口
//alert("调用本地接口");
var result = "1111111";
MainWindow.submit_webcb(result);
}
function Add(value1, value2) {
alert("我是 html add 接口");
return value1 + value2;
}
function MyMethod() {
alert(11111111111111111);
window.external.MyMethod();
}
</script>
</head>
<body>
<form action="" onsubmit="submitUserInfo()">
<input type="submit" value="调用本地接口"/>
</form>
<form action="" onsubmit="MyMethod()">
<input type="submit" value="MyMethod"/>
</form>
</body>
</html>