项目错误:QT 中的未知模块:webkitwidgets

Project ERROR: Unknown module(s) in QT: webkitwidgets

本文关键字:未知 模块 webkitwidgets 错误 QT 项目      更新时间:2023-10-16

我正在将代码从qt4移植到qt5。按照建议,我将以下行添加到我的.pro文件中:

QT += webkitwidgets

但是,当我运行qmake时,我收到此错误:

Project ERROR: Unknown module(s) in QT: webkitwidgets

我正在 Ubuntu 12.04 LTS 上开发并按照描述安装了 Qt。

您需要安装 webkitwidgets 库。

在 Ubuntu 上,在终端中尝试此操作:

sudo apt-get install libqt5webkit5-dev

在 Fedora 上,软件包有不同的名称,因此请尝试:

sudo apt-get install qt5-qtwebkit-devel

或者在Fedora上,通过dnf:

sudo dnf install qt5-qtwebkit-devel

如果您需要安装 Qt 5.7 的 webkit* Windows 库,您应该手动编译它,因为在新版本 webkit (WebView?) 中被 WebEngine 取代。

阅读有关Qt 5.7版本的信息(评论): http://blog.qt.io/blog/2016/06/16/qt-5-7-released/

构建顺序(静态或共享):

1) 下载Qt 5.7.0来源: http://download.qt.io/community_releases/5.7/5.7.0/

2)下载所需的工具:ActiveState Perl(二进制),Python(二进制),Ruby(二进制),GnuWin Bison(二进制),GPref(二进制),Grep(二进制),WinFlex,LibIconv,make(二进制),sqlite(source!),ICU(源代码),Windows msys(二进制)(Unix类shell与工具),mingw-w64(bin+dev)用于使用QtWebKit构建Qt,请参阅链接:https://trac.webkit.org/wiki/BuildingQtOnWindows

3) 将 ICU 源下载到 C:\icu\icu 后。打开 msys QT mingw 控制台 shell,打开"开始"窗口菜单(msys 应下载并安装)并搜索或使用快速搜索。在打开的控制台中启动配置脚本,然后编译并安装:

$ cd C:\icu\icu\source

$ ./runConfigureICU

$ 设置路径=%路径%;C:\msys\1.0\bin\

$ 使.exe

$ 制造.exe安装

4) 构建 Qt with(!)ICU 支持(设置"-icu"进行配置)请参阅下面的编译脚本。更改环境的路径。

目录结构:

  • C:\Qt\5.7.0 - 在此处下载Qt 5.7.0的二进制版本
  • C:\Qt\5.7.0n - 5.7.0 新版本(编译)的目录(只需制作目录)
  • C:\Qt\Src - 在此处下载 Qt 5.7.0 的源代码

C:\Qt\Src\qtbase\compile.bat

set INCLUDE=C:icuicudistinclude
set LIB=C:icuicudistlib
set QTDIR=C:Qt5.7.0n
set PATH=%PATH%;C:QtQt5.7.05.7mingw53_32bin;C:QtQt5.7.0ToolsQtCreatorbin;C:QtQt5.7.0Toolsmingw530_32bin;C:QtSrcqtbasebin;C:Program Files (X86)GnuWin32bin;C:winflex;C:Ruby23-x64bin;C:Python27;C:mingw-w64i686-1mingw32bin;C:icubin
set QMAKESPEC=win32-g++
set BUILD_DIR=C:QtQt5.7.0n
call C:QtSrcqtbaseconfigure.bat -prefix %BUILD_DIR% -platform %QMAKESPEC% -confirm-license -debug-and-release -opensource -opengl desktop -no-compile-examples -icu -I C:/icu/icu/dist/include -L C:/icu/icu/dist/lib
jom.exe -j 4
pause

在 Windows Power Shell 中的 exmaple 中运行命令:

$ cd C:\Qt\Src\qtbase

$ ./编译.bat

通过编译后使用它在BUILD_DIR中安装文件(安装 Qt 文件):

$ C:\mingw-w64\i686-1\mingw32\bin\mingw32-make.exe install

Qt应该开始安装

5) 将 Qtwebkit

源代码下载到 C:\Qt\Src\qtwebkit。使用下面的编译脚本编译 qtwebkit,使用新的 Qt 5.7.0 构建,其中包含 C:\Qt\5.7.0n 中的文件和 ICU。

C:\Qt\Src\qtwebkit\Tools\Scripts\compile.bat

set INCLUDE=C:sqlite
set LIBS=C:sqlite
set SQLITE3SRCDIR=C:sqlite
set QTDIR=C:QtQt5.7.0n
set PATH=%PATH%;C:QtQt5.7.0nbin;C:QtSrcqtbasebin;C:winflex;C:Ruby23-x64bin;C:Python27;C:mingw-w64i686-1mingw32bin;C:icubin;C:Program Files (x86)GnuWin32bin
set QMAKESPEC=win32-g++
call perl.exe .build-webkit --qt --release

编译 qtwebkit:

$ cd C:\Qt\Src\qtwebkit\Tools\Scripts

$ ./编译.bat

$ cd C:\Qt\Src\qtwebkit\WebKitBuild\Release

$ C:\mingw-w64\i686-1\mingw32\bin\mingw32-make.exe install

成功编译和安装后,应该可以使用 qtwebkit 编译您的应用程序。

构建静态 QT

编辑文件 C:\Qt\Src\qtbase\compile.bat 并传递 build。

...
call C:QtSrcqtbaseconfigure.bat -prefix %BUILD_DIR% -platform %QMAKESPEC% -confirm-license -debug-and-release -opensource -opengl desktop -static -no-compile-examples -icu
echo "QMAKE_FLAGS += -static -static-libgcc" >> .mkspecs/%QMAKESPEC%/qmake.conf
...

可能的错误

1) 在构建 qtwebkit 时:"fatal error: unicode/uchar.h: No such file or directory"

检查您的Qt 5.7.0n是否使用ICU构建。IT 还可以在 qtwebkit 中的配置中通知您"需要 ICU"。

2) flex: unknown flag '-'. For usage, try

在这种情况下,您应该使用"win_flex"的正确版本的 Flex。您应该重命名文件以使用 win_flex 而不仅仅是 flex(和野牛)。

1) 将 C:\Program Files (x86)\GnuWin32\bin\flex.exe 重命名为一些未使用的名称。

2) 将 C:\Program Files (x86)\GnuWin32\bin\bison.exe重命名为某个未使用的名称。

3) 将 C:\winflex\win_bison.exe 重命名为 bison.exe。

3) 构建 qtwebkit 时:"fatal error: sqlite3.h: No such file or directory"

编辑文件 C:\Qt\Src\qtwebkit\Tools\Scripts\compile.bat 并检查 sqlite 的正确路径:

set SQLITE3SRCDIR=C:(path to some SQLITE .h/source files)

4) skipping incompatible ... when searching for ...

您应该下载正确的库架构(32 位或 64 位)

5) View.cpp ... undefined reference to WKPageCanGoBack

通过某些测试或迷你浏览器时可能会发生。您可以在文件中搜索"UIProcess/API/qt"和"MiniBroswer"并将其从中删除生成文件和其他一些文件,然后再次开始构建。

链接

构建 Qt5:https://wiki.qt.io/Building_Qt_5_from_Git Qt WebKit 构建

喜欢如何:https://trac.webkit.org/wiki/BuildingQtOnWindows 重症监护室

使用 GNU 构建:https://wiki.qt.io/Compiling-ICU-with-MinGW

Alex 引用的社区构建仅在 Qt 5.9 之前可用。如果你想使用更新的Qt5(当前版本是5.11),那么另一个选择是将"QtWebKit"移植到"QtWebEngine"。

请参阅:https://wiki.qt.io/QtWebEngine/Porting_from_QtWebKit

我通过从以前的安装 5.5 复制 webkit 和 webkitwidgets pri 文件来让它工作。

~/Qt/5.5/clang_64/mkspecs/modules/

对于Windows,我只是下载了 https://github.com/annulen/webkit/releases/tag/qtwebkit-tp5 并将文件夹复制到相关的Qt安装文件夹中。现在我可以将MinGW Qt5.8与最新的webkit一起使用。感谢康斯坦丁和这个项目的所有贡献者!

只有一件事需要注意 - 我需要在Qt中使用发布配置。

我有用的是两个答案的组合,我使用了@user1251007建议的+这个命令

sudo apt-get install libqt5websockets5-dev

在这里找到这个命令行:链接到堆栈溢出响应