Qt基础之十八:WebEngine与JavaScript交互

Posted 草上爬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt基础之十八:WebEngine与JavaScript交互相关的知识,希望对你有一定的参考价值。

Qt从5.6开始就用Qt Webengine替换了Qt WebKit,据说加载速度较Qt WebKit更快。
需在pro中添加QT += webenginewidgets

一.效果

 二.实现

1.javascript调用Qt函数

在MainWindow中定义成员变量QWebChannel *m_channel;作为和web通信的数据通道
①加载网页

void MainWindow::loadhtml()

    m_channel = new QWebChannel(this); 
    m_channel->registerObject("CaoShangPa", this);// 这里注册对象名"CaoShangPa"需要与JS函数用到的名称一致
    ui->htmlWebView->page()->setWebChannel(m_channel);
    QString htmlPath = QCoreApplication::applicationDirPath() +"/html/index.html";
    qDebug()<<htmlPath;
    ui->htmlWebView->load(QUrl("file:///"+htmlPath));//或ui->htmlWebView->page()->load()
    
    ui->htmlWebView->setContentsMargins(0,0,0,0);

registerObject的第二个参数可以是其他继承自QObject的类对象。这里为了简单起见

以上是关于Qt基础之十八:WebEngine与JavaScript交互的主要内容,如果未能解决你的问题,请参考以下文章

python基础入门之十八 —— 模块和包

python基础入门之十八 —— 面向对象版学员管理系统

Qt基础之十四:线程同步

Qt基础之十四:线程同步

Qt基础之十六:QtConcurrent和QThreadPool

Qt基础之十六:QtConcurrent和QThreadPool