由于项目需要,一直使用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);
运行截图如下