Important: Please read the Qt Code of Conduct -

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

  • 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: ""

                experimental.preferences.pluginsEnabled: true;
                experimental.preferences.javascriptEnabled: true
                onUrlChanged: {


    It display html pages as well,but flash object didn't showed up,it shows a little icon like this:
    I thought the flash plugin was not loaded,but i don't know why.
    any suggestion will be helpful,thanks.

  • 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.

  • 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 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"


    class QDeclarativeWebViewPrivate {
    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)
    void updateWindowObjects();
    QObjectList windowObjects;
    bool rendering;

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

    if (QWebSettings::iconDatabasePath().isNull() &&
        QWebSettings::globalSettings()->localStoragePath().isNull() &&
        QWebSettings::offlineStoragePath().isNull() &&
    setFlag(QGraphicsItem::ItemHasNoContents, true);
    setFlag(QGraphicsItem::ItemIsFocusScope, true);
    d->view = new GraphicsWebView(this);
    QWebPage* wp = new QDeclarativeWebPage(this);
    if (!preferredWidth())
    if (!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:

    You should check on that and build your own wrapper

Log in to reply