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();
}