Qt自带的QWebEngine 不支持播放MP4, 需要手动编译QWebEngine模块

不支持播放mp4
, m_webEngine(new MyWebEngine(this))
void MainWindow::init()
{
QNetworkProxyFactory::setUseSystemConfiguration(false);
setCentralWidget(m_webEngine);
}
#include <QWebEngineView>
#include <QWebEnginePage>
class QUrl;
class WebView : public QWebEngineView
{
Q_OBJECT
public:
explicit WebView(QWidget *parent = nullptr);
protected:
QWebEngineView* createWindow(QWebEnginePage::WebWindowType type) override;
private:
void initControl();
private:
QUrl url;
};
class MyWebEngine: public QWidget{
Q_OBJECT
public:
explicit MyWebEngine(QWidget*parent = nullptr);
};
#endif
#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("http"))url = "https://"+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();
}