由于项目需要,一直使用qt5.7.0这个版本,但是这个版本携带的webwidget不支持vue等项目的运行,可能chrom内核版本太旧

于是就查找了一下开源项目,发现了miniblink这个东西,引用也非常方面,今天使用了一下,现在做一个总结

github上下载sdk,解压出来里面有两个文件有用

把wke.h复制到工程目录下,把node.dll复制到运行目录下 ,接下来新建一个qt的gui项目,main函数中这样写

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    wkeSetWkeDllPath(L"node.dll");
    wkeInitialize();
    MainWindow w;
    w.show();
    int ret=a.exec();
    wkeFinalize();
    return ret;
}

接下来新建一个包装控件 类

#ifndef WEBWIDGET_H
#define WEBWIDGET_H

#include <QWidget>
#include <QResizeEvent>
#include "wke.h"
class WebWidget : public QWidget
{
    Q_OBJECT
public:
    explicit WebWidget(const QString& url="",QWidget *parent = 0);
    ~WebWidget();
    wkeWebView webView;
    void loadUrl(QString& url);
    void resizeEvent(QResizeEvent *event);
    void onMove();
signals:

public slots:
};

#endif // WEBWIDGET_H

#include "webwidget.h"
#include <QHBoxLayout>
#include <QDebug>
WebWidget::WebWidget(const QString& url,QWidget *parent) : QWidget(parent)
{
    webView= wkeCreateWebWindow(WKE_WINDOW_TYPE_TRANSPARENT, (HWND)this->winId(), 0, 0, this->width(),this->height());
    wkeShowWindow(webView, TRUE);
    wkeLoadURL(webView,url.toLocal8Bit().data());
}
WebWidget::~WebWidget()
{
    qDebug()<<"in del";
}
void WebWidget::loadUrl(QString& url)
{
    wkeLoadURL(webView,url.toLocal8Bit().data());
}
void WebWidget::resizeEvent(QResizeEvent *event)
{
    Q_UNUSED(event);
    wkeResize(webView, this->width(),this->height());
    QPoint pos=this->mapToGlobal(QPoint(0,0));
    wkeMoveWindow(webView,pos.x(),pos.y(),this->width(),this->height());
}
void WebWidget::onMove()
{
    QPoint pos=this->mapToGlobal(QPoint(0,0));
    wkeMoveWindow(webView,pos.x(),pos.y(),this->width(),this->height());
}

使用的时候大概这样

    webWidget=new WebWidget(Setting::get("url"));
    ui->content->layout()->addWidget(webWidget);

运行截图如下

Logo

前往低代码交流专区

更多推荐