cpp
复制代码
// mywebengine.cpp
#include "mywebengine.h"
#include <QWebEngineFullScreenRequest>
#include <QWebEngineSettings>
#include <QWebEngineView>
#include <QLineEdit>
#include <QToolButton>
#include <QBoxLayout>
WebView::WebView(QWidget *parent)
{
setAttribute(Qt::WA_DeleteOnClose);
settings()->setAttribute(QWebEngineSettings::FullScreenSupportEnabled,true);
initControl();
}
QWebEngineView *WebView::createWindow(QWebEnginePage::WebWindowType) {
load(url);
return nullptr;
}
void WebView::initControl()
{
connect(page(), &QWebEnginePage::linkHovered, this,
[=](const QString &u){url.setUrl(u);
});
connect(page(),&QWebEnginePage::fullScreenRequested,this,
[=](QWebEngineFullScreenRequest pageRequeset) {
pageRequeset.accept();
});
}
MyWebEngine::MyWebEngine(QWidget *parent)
{
auto vlayout = new QVBoxLayout(this);
auto layout = new QHBoxLayout(this);
auto *back = new QToolButton(this); back->setText("<");
auto *forword = new QToolButton(this); forword->setText(">");
auto *reload = new QToolButton(this); reload->setText("刷新");
auto *go = new QToolButton(this); go->setText("Go");
auto *input = new QLineEdit(this);
input->setClearButtonEnabled(true);
input->setText("https://www.baidu.com");
auto *view = new WebView(this);
setStyleSheet(R"(QToolButton,QLineEdit{height:30px;border-radius:2px;}
QLineEdit{font-size:14px;padding:0 0 0 8; border:none;border-radius:13px;}
QToolButton:hover,QLineEdit:hover{border:1px solid #4999FA;background-color:#DDEEFF}
)");
layout->addWidget(back);
layout->addWidget(forword);
layout->addWidget(reload);
layout->addWidget(input);
layout->addWidget(go);
layout->setContentsMargins(0,0,0,0);
layout->setSpacing(0);
vlayout->setContentsMargins(0,0,0,0);
vlayout->setSpacing(0);
vlayout->addLayout(layout);
vlayout->addWidget(view);
connect(forword,&QToolButton::clicked,view,&QWebEngineView::forward);
connect(back,&QToolButton::clicked,view,&QWebEngineView::back);
connect(reload,&QToolButton::clicked,view,&QWebEngineView::reload);
connect(go,&QToolButton::pressed,this,[=](){
auto url = input->text().trimmed();
// if(!url.contains("www")) url = "www."+url;
if(!url.contains("http"))url = "https://"+url;
// qDebug()<< "url:" << url;
input->setText(url);
view->load(url);
});
connect(input,&QLineEdit::returnPressed,go,&QToolButton::pressed);
connect(view,&QWebEngineView::urlChanged,this,[=](const QUrl &u){
input->setText(u.toString());
});
emit go->pressed();
}