如何编译qtwebkit插件?

时间:2015-03-06 18:10:08

标签: c++ qt mingw qtwebkit qwebview

QtWebkit-plugins是一个向QWebView提供功能的库,例如SpellCheckNotification Web API

  

阅读:

     

我尝试在Windows中编译代码,但我的QWebView无法按预期工作,换句话说,SpellCheckNotification Web API无效。这就像我没有使用QtWebkit-plugins一样。哪个可以?

在要编译的文档中,我必须运行:

$ qmake
$ make && make install

QtWebkit-plugins repository

中了解详情

我使用mingw而不是make我使用了mingw32-make

  • 我编译了hunspell
  • 复制hunspell C:\Qt5.4.0\5.4\mingw491_32\binC:\Qt5.4.0\5.4\mingw491_32\lib
  • 我在cmd中编译了qtwebkit-plugins:

    qmake
    mingw32-make && mingw32-make install
    
  • mingw32-make已生成libqtwebkitpluginsd.aqtwebkitplugins.dll

  • 复制libqtwebkitpluginsd.a C:\Qt5.4.0\5.4\mingw491_32\lib
  • 复制qtwebkitplugins.dll C:\Qt5.4.0\5.4\mingw491_32\plugins\webkitC:\Qt5.4.0\5.4\mingw491_32\bin

之后我编译了另一个使用QWebView的简单项目,然后测试了SpellCheck中的<textarea spellcheck="true"></textarea>并且无效。

我测试了Notification Web API并且也没有用。

注意:使用QT_DEBUG_PLUGINS=1运行项目并在应用程序输出标签中使用Notification Web API (在QtCreator中)返回:

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

在我看来,dll已加载,它只是无效。

我的项目如何运作这些功能?

1 个答案:

答案 0 :(得分:1)

对于 QT-5.2 + 中的这项工作,需要修改qwebkitplatformplugin.h文件

改变这个:

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

由此:

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

如果需要与 QT-4.8 兼容,请更改以下代码:

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