zoukankan      html  css  js  c++  java
  • QWebView 播放网络视频

     最近想看某站的VIP视频,但是网络上的软件用着都不怎么习惯,还有些要收费(收费还不如买VIP了..),所以自己研究做个网络播放器,使用的是QWebView。

    1.设置WebView

    ui->webView->settings()->setAttribute(QWebSettings::PluginsEnabled,true);
        ui->webView->settings()->setAttribute(QWebSettings::JavaEnabled,true);
        ui->webView->settings()->setAttribute(QWebSettings::JavascriptEnabled,true);
        ui->webView->settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows,true);
        ui->webView->settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard,true);
        ui->webView->settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled,true);
        ui->webView->settings()->setAttribute(QWebSettings::SpatialNavigationEnabled,true);
        ui->webView->settings()->setAttribute(QWebSettings::LinksIncludedInFocusChain,true);
        ui->webView->settings()->setAttribute(QWebSettings::AcceleratedCompositingEnabled,true);
        ui->webView->settings()->setAttribute(QWebSettings::AutoLoadImages,true);

    2.加载网页之后,网页存在链接,要使链接生效,则需要设置

    ui->webView->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);

    3.当点击网页中的链接会触发信号(前提是设置链接生效)=》linkClicked(const QUrl &arg1)

    void MainWindow::on_webView_linkClicked(const QUrl &arg1)
    {
        ui->webView->load(arg1);
    }

    4.这时候运行就能上网了,但是播放视频显示flash过期,查了哈是需要安装 flash player for firefox,安装之后运行:

    5.至此可以播放视频了,但是却发现点击网页内的搜索等按钮是没有反应的,这可不行,重写QWebPage

    bool MyWebPage::acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, QWebPage::NavigationType type)
    {
        if(type == 0 || type == 1)//如果是用户点击
        {
            if(frame != mainFrame()){ //如果不是在本窗口的连接
                emit openLink(request.url());//发送打开新连接信号
            }else{
                emit loadLink(request.url());//发送点击连接信号
            }
        }
    
        return QWebPage::acceptNavigationRequest(frame, request, type);
    }

    6.ok,到这里基本上可以满足我看视频的需求了,附结果图(鬼吹灯第14集):

  • 相关阅读:
    stylelint 安装配置
    使用 jest 测试 react component 的配置,踩坑。
    互联网媒体类型 MIME Type
    react-router 父子路由同时要接收 params 的写法
    fixed 相对于父容器定位
    react 点击空白处隐藏弹出层
    canvas 使用 isPointInPath() 判断鼠标位置是否在绘制的元素上
    JavaScript 缓存基本原理
    简单说明 Virtual DOM 为啥快
    通过阻止 touchstart 事件,解决移动端的 BUG
  • 原文地址:https://www.cnblogs.com/qnkk123/p/6274023.html
Copyright © 2011-2022 走看看