Как скомпилировать плагины qtwebkit?

QtWebkit-plugins — это библиотека, предоставляющая функции для QWebView, например SpellCheck и Notification Web API.

Читать о:

Я попытался скомпилировать код в Windows, но мой QWebView не работает должным образом, другими словами, SpellCheck и Notification Web API не работают . Как будто я не использовал QtWebkit-plugins. Который может быть?

В документации, которая говорит о компиляции, мне нужно запустить:

$ qmake
$ make && make install

Подробнее читайте в репозитории плагинов QtWebkit.

Я использую mingw, вместо make я использовал mingw32-make:

  • Я собрал hunspell
  • Скопировано hunspell для C:\Qt5.4.0\5.4\mingw491_32\bin и C:\Qt5.4.0\5.4\mingw491_32\lib
  • Я скомпилировал плагины qtwebkit, используя cmd:

    qmake
    mingw32-make && mingw32-make install
    
  • mingw32-make сгенерировал libqtwebkitpluginsd.a и qtwebkitplugins.dll

  • Скопировано libqtwebkitpluginsd.a для C:\Qt5.4.0\5.4\mingw491_32\lib
  • Скопировано qtwebkitplugins.dll для C:\Qt5.4.0\5.4\mingw491_32\plugins\webkit и C:\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 загружается, просто не работает.

Как в моих проектах работают эти функции?


person Guilherme Nascimento    schedule 06.03.2015    source источник


Ответы (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
person Guilherme Nascimento    schedule 08.03.2015
comment
спасибо за то, что предоставили здесь свои с трудом заработанные знания, и спасибо (теперь я вижу) за то, что внес это исправление в репозиторий github! Это дает мне новую надежду, что я смогу заставить это работать в моем собственном приложении. Я ищу дополнительную документацию о том, что нужно сделать, чтобы проверка орфографии действительно работала, и, к сожалению, для этого здесь недостаточно подробностей. Я нашел интересную информацию в кеше Google SO-вопроса 17631200, который вы задали и, похоже, удалили. - person stonecrusher; 20.03.2015
comment
Было бы полезно, если бы вы могли предоставить небольшой пример того, что вам нужно добавить в простой веб-просмотр, чтобы заставить его работать. По крайней мере, в настоящее время он ничего не делает, если плагин загружается в примере Qt «Fancy Browser». - person stonecrusher; 20.03.2015
comment
@stonecrusher Я создаю репозиторий с полным примером использования. Проверка орфографии уже работает почти полностью (включая подсказки меню), не хватает только билда notifications web api. :) Спасибо! Восстановлено: stackoverflow.com/q/17631200/1518921 - person Guilherme Nascimento; 20.03.2015
comment
Вы также можете просмотреть несколько коммитов исправлений проверки орфографии, сделанных для qupzilla, поскольку они интегрировали этот плагин. Если у меня будет время, я могу попытаться перенести эти исправления в плагин, но они также включают кучу вещей qupzilla, так что это может быть немного работы. В настоящее время GitHub не поддерживает поиск по сообщениям фиксации (stackoverflow.com/questions/18122628/), поэтому мне пришлось использовать gitk для поиска. Спасибо за вашу работу над этим - я с нетерпением жду репо, о котором вы упомянули. - person stonecrusher; 20.03.2015
comment
На мой взгляд, то, что есть в qupzilla, очень сложное и сложное в обслуживании. Вместо создания плагина я использую расширение QApplication для изменения словарей и других данных плагина webkit, и я переместил speller.cpp в другое место, чтобы использовать его как с плагином, так и с приложением. Но все же немного неорганизованно. :) Спасибо! - person Guilherme Nascimento; 20.03.2015