Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt WebKit
  4. [Solved]WebView can't load flash plugin to play swf file
Forum Update on Monday, May 27th 2025

[Solved]WebView can't load flash plugin to play swf file

Scheduled Pinned Locked Moved Qt WebKit
4 Posts 2 Posters 4.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H Offline
    H Offline
    hhacker
    wrote on last edited by
    #1

    hi
    I have stuck with this flash problem for days,my environment is
    windows 7 64bit,
    Qt5.2 32bit,
    adobe flash player 11 32bit
    and my code is like these:
    @
    WebView {
    id: testWebViewJs
    anchors.fill: parent
    url: "http://helpx.adobe.com/flash-player.html"

                experimental.preferences.pluginsEnabled: true;
                experimental.preferences.javascriptEnabled: true
    
                onUrlChanged: {
                    console.log(testWebViewJs.url);
    
                }
         }
    

    @

    It display html pages as well,but flash object didn't showed up,it shows a little icon like this:
    !http://t1.qpic.cn/mblogpic/92f79b50b83af4f3ecf0/2000.jpg(pic)!
    I thought the flash plugin was not loaded,but i don't know why.
    any suggestion will be helpful,thanks.

    1 Reply Last reply
    0
    • H Offline
      H Offline
      hhacker
      wrote on last edited by
      #2

      I checked on Qt5.2 example code "browser" project, and suddenly I finger out the Qt Quick 2 causes this problem,whatever you import QtWebKit.experimental 1.0 and set "experimental.preferences.pluginsEnabled: true", it doesn't work anyway.
      So What I need to do is just wrap the QWebView to qml,and it works fine now.
      problem resolved.

      1 Reply Last reply
      0
      • GianlucaG Offline
        GianlucaG Offline
        Gianluca
        wrote on last edited by
        #3

        Can you post the code on how to wrap a QWebView to qml ??
        I have the same problem, but I don't know how to wrap a QWebView into qml

        1 Reply Last reply
        0
        • H Offline
          H Offline
          hhacker
          wrote on last edited by
          #4

          [quote author="Gianluca" date="1408976181"]Can you post the code on how to wrap a QWebView to qml ??
          I have the same problem, but I don't know how to wrap a QWebView into qml[/quote]

          You can do it in this way:(from qt 4.8 source code,it's compatible with 4.8/5.3)
          @#include "qdeclarativewebview_p.h"

          #include <QtCore/QDebug>
          #include <QtCore/QEvent>
          #include <QtCore/QFile>
          #include <QtDeclarative/QDeclarativeContext>
          #include <QtDeclarative/QDeclarativeEngine>
          #include <QtDeclarative/qdeclarative.h>
          #include <QtGui/QApplication>
          #include <QtGui/QGraphicsSceneMouseEvent>
          #include <QtGui/QKeyEvent>
          #include <QtGui/QMouseEvent>
          #include <QtGui/QPen>
          #include "qwebelement.h"
          #include "qwebframe.h"
          #include "qwebpage.h"
          #include "qwebsettings.h"

          QT_BEGIN_NAMESPACE

          class QDeclarativeWebViewPrivate {
          public:
          QDeclarativeWebViewPrivate(QDeclarativeWebView* qq)
          : q(qq)
          , preferredwidth(0)
          , preferredheight(0)
          , progress(1.0)
          , status(QDeclarativeWebView::Null)
          , pending(PendingNone)
          , newWindowComponent(0)
          , newWindowParent(0)
          , rendering(true)
          {
          }

          QDeclarativeWebView* q;
          
          QUrl url; // page url might be different if it has not loaded yet
          GraphicsWebView* view;
          
          int preferredwidth, preferredheight;
          qreal progress;
          QDeclarativeWebView::Status status;
          QString statusText;
          enum { PendingNone, PendingUrl, PendingHtml, PendingContent } pending;
          QUrl pendingUrl;
          QString pendingString;
          QByteArray pendingData;
          mutable QDeclarativeWebSettings settings;
          QDeclarativeComponent* newWindowComponent;
          QDeclarativeItem* newWindowParent;
          
          static void windowObjectsAppend(QDeclarativeListProperty<QObject>* prop, QObject* o)
          {
              static_cast<QDeclarativeWebViewPrivate*>(prop->data)->windowObjects.append(o);
              static_cast<QDeclarativeWebViewPrivate*>(prop->data)->updateWindowObjects();
          }
          
          void updateWindowObjects();
          QObjectList windowObjects;
          
          bool rendering;
          

          };
          void QDeclarativeWebView::init()
          {
          d = new QDeclarativeWebViewPrivate(this);

          if (QWebSettings::iconDatabasePath().isNull() &&
              QWebSettings::globalSettings()->localStoragePath().isNull() &&
              QWebSettings::offlineStoragePath().isNull() &&
              QWebSettings::offlineWebApplicationCachePath().isNull())
              QWebSettings::enablePersistentStorage();
          
          setAcceptedMouseButtons(Qt::LeftButton);
          setFlag(QGraphicsItem::ItemHasNoContents, true);
          setFlag(QGraphicsItem::ItemIsFocusScope, true);
          setClip(true);
          
          d->view = new GraphicsWebView(this);
          d->view->setResizesToContents(true);
          d->view->setFocus();
          QWebPage* wp = new QDeclarativeWebPage(this);
          setPage(wp);
          if (!preferredWidth())
              setPreferredWidth(d->view->preferredWidth());
          if (!preferredHeight())
              setPreferredHeight(d->view->preferredHeight());
          connect(d->view, SIGNAL(geometryChanged()), this, SLOT(updateDeclarativeWebViewSize()));
          connect(d->view, SIGNAL(doubleClick(int, int)), this, SIGNAL(doubleClick(int, int)));
          connect(d->view, SIGNAL(scaleChanged()), this, SIGNAL(contentsScaleChanged()));
          

          }@

          There two file name as you need in qt 4.8 source code:
          qdeclarativewebview.cpp
          qdeclarativewebview_p.h

          You should check on that and build your own wrapper

          1 Reply Last reply
          0

          • Login

          • Login or register to search.
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • Users
          • Groups
          • Search
          • Get Qt Extensions
          • Unsolved