CC++嵌入BS架构的页面

CC++嵌入BS架构的页面,第1张

        最近项目要用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();

}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/798784.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存