我正在将代码从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
在这里找到这个命令行:链接到堆栈溢出响应