当前位置: 首页 > news >正文

QWebEngine

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

在这里插入图片描述

不支持播放mp4

// mainwindow.cpp
, m_webEngine(new MyWebEngine(this))
void MainWindow::init()
{   //关闭系统代理,提高速度,采用release会更快QNetworkProxyFactory::setUseSystemConfiguration(false);setCentralWidget(m_webEngine);
}
// mywebengine.h
#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 // MYWEBENGINE_H
// 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();
}

相关文章:

  • LVGL学习笔记-----标签控件(lv_label)
  • 【学习笔记】重载和重写的注意事项
  • 前端历练(一)Tailwind 配置
  • MCP(Model Context Protocol,模型上下文协议)的当前状态
  • 《棒垒球百科》棒球、垒球奥运会运动员规定·棒球1号位
  • kafka Tool (Offset Explorer)使用SASL Plaintext进行身份验证
  • Reels流量密码:Ins 2025算法偏好的7个隐形规则
  • 自动化模型管理:MediaPipe Android SDK 中的模型文件下载与加载机制
  • 中小企业数字化转型:如何选择靠谱的软件开发服务商?
  • 详解Python当中的pip常用命令
  • Day13_C语言基础项目实战
  • Python训练营-Day30-模块和库的导入
  • PHP设计模式实战:微服务架构与事件驱动系统
  • android过渡动画
  • iOS性能调试完整流程实录:工具组合下的问题定位与修复实践(含keymob)
  • PyTorch深度学习框架60天进阶学习计划 - 第58天端到端对话系统(一):打造你的专属AI语音助手
  • 嵌入式PADS原理图与元件符号绘制实现
  • 如何安装使用qmt脚本跟单聚宽策略
  • Vue嵌套路由
  • Ubuntu Server 24.04|22.04|20.04|18.04 安装GUI DESKTOP xfce4
  • 做网站的公司重庆/网络销售怎么学
  • 网站建设发票内容/跨境电商营销推广
  • 后端网站开发培训/谈谈对seo的理解
  • 深圳网站建设优化/seo的五个步骤
  • 网页制作多少钱一个月/网站是怎么优化的
  • 反恶意镜像网站/网络营销是什么