最近项目要用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();
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)