Korvo
Korvo

Reputation: 9724

How to compile qtwebkit plugins?

QtWebkit-plugins is a library that provides features to the QWebView, eg SpellCheck and Notification Web API.

Read about:

I tried to compile the code in Windows, but my QWebView not working as expected, in other words, SpellCheck and Notification Web API not working. It's like I've been not-using QtWebkit-plugins. Which can be?

In the documentation that says to compile I have to run:

$ qmake
$ make && make install

Read more in QtWebkit-plugins repository

I'm using mingw, instead of make I used mingw32-make:

After that I compiled another simple project that uses QWebView then tested the SpellCheck in a <textarea spellcheck="true"></textarea> and did not work.

I tested the Notification Web API and also did not work.

Note: When running my project using QT_DEBUG_PLUGINS=1 and use Notification Web API in the application output tab (in QtCreator) returns:

Found metadata in lib C:/Qt5.4.0/5.4/mingw491_32/plugins/webkit/qtwebkitplugins.dll, metadata=
{
    "IID": "org.qtwebkit.QtWebKit.QtWebKitPlugin",
    "MetaData": {
    },
    "className": "QtWebKitPlugin",
    "debug": false,
    "version": 328704
}


loaded library "C:/Qt5.4.0/5.4/mingw491_32/plugins/webkit/qtwebkitplugins.dll"
QLibraryPrivate::unload succeeded on "C:/Qt5.4.0/5.4/mingw491_32/plugins/webkit/qtwebkitplugins.dll" 
QSystemTrayIcon::setVisible: No Icon set

It seems to me that the dll is loaded, it just is not working.

How do my projects work these features?

Upvotes: 1

Views: 959

Answers (1)

Korvo
Korvo

Reputation: 9724

For this work in QT-5.2+ is necessary to modified the qwebkitplatformplugin.h file

Change this:

QT_BEGIN_NAMESPACE
Q_DECLARE_INTERFACE(QWebKitPlatformPlugin, "com.nokia.Qt.WebKit.PlatformPlugin/1.9");

By this:

QT_BEGIN_NAMESPACE
Q_DECLARE_INTERFACE(QWebKitPlatformPlugin,
    "org.qt-project.Qt.WebKit.PlatformPlugin/1.9");

If needed compatibility with QT-4.8 change the code for this:

QT_BEGIN_NAMESPACE
#if QT_VERSION >= 0x050200
Q_DECLARE_INTERFACE(QWebKitPlatformPlugin, "org.qt-project.Qt.WebKit.PlatformPlugin/1.9")
#else
Q_DECLARE_INTERFACE(QWebKitPlatformPlugin, "com.nokia.Qt.WebKit.PlatformPlugin/1.9")
#endif
QT_END_NAMESPACE

Upvotes: 1

Related Questions