javascript
qt调用html里面的函数吗,QT和JS的互相调用例子
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
/* 載入html網頁 */
m_pWebView = new QWebView();
m_pWebView->load(QUrl("file:///D:/jsTest.html"));
m_pWebView->show();
/* 開啟JavaScript支持 */
QWebSettings *pWebSettings = m_pWebView->page()->settings();
pWebSettings->setAttribute(QWebSettings::JavascriptEnabled,true);
/* 窗體布局, 添加按鈕 */
QPushButton *pEventBtn = new QPushButton(tr("QT Invoke JavaScript web page Object"));
QPushButton *pcloseBtn = new QPushButton(tr("close"));
/* 布局:網頁與按鈕為上下布局,兩按鈕為水平居中布局 */
QHBoxLayout *pBtnLayout = new QHBoxLayout;
pBtnLayout->addWidget(pEventBtn);
pBtnLayout->addWidget(pcloseBtn);
pBtnLayout->setAlignment(Qt::AlignCenter);
QVBoxLayout *pMainLayout = new QVBoxLayout;
pMainLayout->addWidget(m_pWebView);
pMainLayout->addLayout(pBtnLayout);
QWidget *widget = new QWidget;
widget->setLayout(pMainLayout);
setCentralWidget(widget);
/* 建立信號與槽, 每次載入html時發送段信號 */
connect(m_pWebView->page()->mainFrame(),SIGNAL(javaScriptWindowObjectCleared()),
this,SLOT(addObjectToJs()));
connect(pEventBtn,SIGNAL(clicked()),this,SLOT(testJs()));
connect(pcloseBtn,SIGNAL(clicked()),this,SLOT(close()));
testStr.clear();
}
MainWindow::~MainWindow()
{
if(m_pWebView != NULL)
{
delete m_pWebView;
m_pWebView = NULL;
}
/* 必須的,否則,在debug編譯模式下就會出現leak錯誤 */
QWebSettings::globalSettings()->clearMemoryCaches();
delete ui;
}
/* 這個public slot槽函數是為了響應JavaScript的的invoke的 */
void MainWindow::jsInvokeQt()
{
qDebug()<
}
/* 將MainWindows這個類的名稱&&對象指針發送給JavaScript */
void MainWindow::addObjectToJs()
{
m_pWebView->page()->mainFrame()->addToJavaScriptWindowObject("MainWindow",this);
}
/* Qt來 invoke JavaScript里面的disp_messagebox()函數 */
void MainWindow::testJs()
{
qDebug()<
m_pWebView->page()->mainFrame()->evaluateJavaScript("disp_messagebox()");
}
/* JavaScript invoke Qt里面的public slot 槽函數 */
void MainWindow::setInfor(const QString str)
{
qDebug()<
if(str.isEmpty())
{
qDebug()<
return;
}
else
{
testStr = str;
}
}
/* JavaScript invoke Qt里面的public slot 槽函數 */
QString MainWindow::getInfor()
{
qDebug()<
return testStr;
}
-----------------------------------------------------------------------------
function?disp_messagebox()
{
alert("This?is?javaScript?MessageBox?come?from?alert!")
}
function?disp_qtmessage()
{
alert("disp_messagebox?function,?who?is?in?JavaScript!")
MainWindow.jsInvokeQt();
MainWindow.setInfor("Qt?change?string");
alert(MainWindow.getInfor());
}
總結
以上是生活随笔為你收集整理的qt调用html里面的函数吗,QT和JS的互相调用例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么取消html的原始属性,回归原始,尽
- 下一篇: android 避内存溢出,Androi