PDA

View Full Version : qtwebkit-plugins load but not work



brcontainer
8th March 2015, 06:16
QtWebkit-plugins (https://github.com/QupZilla/qtwebkit-plugins) is a library that provides features to the QWebView, eg SpellCheck and Notification Web API .

Read about:


SpellCheck: https://developer.mozilla.org/en-US/docs/Web/HTML/Controlling_spell_checking_in_HTML_formsControllin g_spell_checking_in_HTML_forms
Notification Web API: https://developer.mozilla.org/en-US/docs/Web/API/notification


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 (https://github.com/QupZilla/qtwebkit-plugins)

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



I compiled hunspell
Copied hunspell for C:\Qt5.4.0\5.4\mingw491_32\bin and C:\Qt5.4.0\5.4\mingw491_32\lib
I compiled qtwebkit-plugins using in cmd:



qmake
mingw32-make && mingw32-make install


mingw32-make generates libqtwebkitpluginsd.a and qtwebkitplugins.dll
Copied libqtwebkitpluginsd.a for C:\Qt5.4.0\5.4\mingw491_32\lib
Copied qtwebkitplugins.dll for C:\Qt5.4.0\5.4\mingw491_32\plugins\webkit and C:\Qt5.4.0\5.4\mingw491_32\bin



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?

Sorry anything, I'm newbie. Thanks!

brcontainer
8th March 2015, 09:54
I solved

For this work in QT5.4+ 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

Pull-request: https://github.com/QupZilla/qtwebkit-plugins/pull/4