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

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

一.效果

Qt基础之十八:WebEngine与JavaScript交互_第1张图片

 二.实现

1.JavaScript调用C++函数

新建一个继承自QObject的类Exchange
在MainWindow中定义成员变量QWebChannel *m_channel;作为和web通信的数据通道
在MainWindow中定义成员变量Exchange *m_exchange,作为JavaScript调用C++函数的桥梁
①加载网页

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

你可能感兴趣的:(Qt基础,qt,javascript,交互,WebEngine,QWebEngineView)