日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

qt调用html里面的函数吗,QT和JS的互相调用例子

發布時間:2024/4/14 javascript 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的互相调用例子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。