最近项目要用C/C++来嵌入BS的网页,经调研发现使用QT Creator工具有直接能用的组件。废话不多说直接上代码。
第一步:创建Qt Widgets项目并修改项目.pro文件添加如下一句
QT += core gui webenginewidgets
第二步:在main.cpp代码里直接调用代码
#include "mainwindow.h" #include#include #include int main(int argc, char *argv[]) { QApplication a(argc, argv); QWebEngineView *myWeb = new QWebEngineView(); myWeb->setUrl(QUrl("https://www.baidu.com")); myWeb->show(); return a.exec(); }
第三步,直接运行代码即可。
注意: 如果BS架构里有打开新的页签操作上面的代码是无法打开页面的,解决方案是重载QWebEngineView里的createWindow函数,也就是要继承QWebEngineView,重载createWindow方法。代码转载自:QT5.12 webengineview鼠标左键点击打开链接_feinxer的博客-CSDN博客_qwebengineview 超链接
第一步,自定义mywebengine组件,添加headers组件自定义代码,mywebengine.h如下
#include#include #include #include class MyWebEngine: public QWebEngineView { Q_OBJECT public: MyWebEngine(QWidget *parent=nullptr); protected: // 鼠标左键点击触发 QWebEngineView * createWindow(QWebEnginePage::WebWindowType type) override; private slots: void onUrlChanged(QUrl url); };
第二步,在sources组件里添加实现方法,mywebengine.cpp如下
#include "mywebengine.h"
MyWebEngine::MyWebEngine(QWidget *parent):QWebEngineView(parent)
{
connect(this, SIGNAL(urlChanged(QUrl)), this , SLOT(onUrlChanged(Url)));
}
QWebEngineView *MyWebEngine::createWindow(QWebEnginePage::WebWindowType type)
{
Q_UNUSED(type)
QWebEngineView * newview = new QWebEngineView(this);
connect(newview, SIGNAL(urlChanged(QUrl)), this , SLOT(onUrlChanged(QUrl)));
return newview;
}
void MyWebEngine::onUrlChanged(QUrl url) {
setUrl(url);
}
第三步,直接在main.cpp方法里引用,代码如下:
#include "mainwindow.h" #include "mywebengine.h" #include#include int main(int argc, char *argv[]) { QApplication a(argc, argv); MyWebEngine *myWeb = new MyWebEngine(); myWeb->setUrl(QUrl("https://www.baidu.com")); myWeb->show(); return a.exec(); }



