我正在将代码从qt4移植到qt5。根据建议,我在.pro
文件中添加了以下行:
QT += webkitwidgets
但是,当我运行时qmake
,出现以下错误:
Project ERROR: Unknown module(s) in QT: webkitwidgets
我正在Ubuntu 12.04 LTS上进行开发,并按所述安装了Qt 。
Answers:
您需要安装webkitwidgets库。
在Ubuntu上,在终端上尝试以下操作:
sudo apt-get install libqt5webkit5-dev
如果您需要安装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(源!),ICU(源),Windows msys(二进制)(与工具类似的shell一样的unix),mingw-w64(bin + dev),用于使用QtWebKit构建Qt,请参见以下链接:https : //trac.webkit.org/ Wiki / BuildingQtOnWindows
3)将ICU源下载到C:\ icu \ icu之后。通过打开“开始”窗口菜单(应下载并安装msys)并搜索或使用快速搜索来打开msys QT mingw控制台外壳。在打开的控制台中,启动configure脚本,然后编译并安装:
$ cd C:\ icu \ icu \ source
$ ./runConfigureICU
$ set PATH =%PATH%; C:\ msys \ 1.0 \ bin \
$ make.exe
$ make.exe安装
4)使用(!)ICU支持构建Qt(设置“ -icu”进行配置),请参见下面的编译脚本。将PATH更改为您的环境。
目录结构:
C:\ Qt \ Src \ qtbase \ compile.bat
set INCLUDE=C:\icu\icu\dist\include
set LIB=C:\icu\icu\dist\lib
set QTDIR=C:\Qt\5.7.0n
set PATH=%PATH%;C:\Qt\Qt5.7.0\5.7\mingw53_32\bin;C:\Qt\Qt5.7.0\Tools\QtCreator\bin;C:\Qt\Qt5.7.0\Tools\mingw530_32\bin;C:\Qt\Src\qtbase\bin;C:\Program Files (X86)\GnuWin32\bin;C:\winflex;C:\Ruby23-x64\bin;C:\Python27;C:\mingw-w64\i686-1\mingw32\bin;C:\icu\bin
set QMAKESPEC=win32-g++
set BUILD_DIR=C:\Qt\Qt5.7.0n
call C:\Qt\Src\qtbase\configure.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
$ ./compile.bat
经过编译后,使用它来在BUILD_DIR中安装文件(安装Qt文件):
$ C:\ mingw-w64 \ i686-1 \ mingw32 \ bin \ mingw32-make.exe安装
Qt应该开始安装
5)将Qtwebkit源下载到C:\ Qt \ Src \ qtwebkit。使用下面的编译脚本,使用带有ICU的C:\ Qt \ 5.7.0n中新文件的Qt 5.7.0新版本编译qtwebkit。
C:\ Qt \ Src \ qtwebkit \ Tools \ Scripts \ compile.bat
set INCLUDE=C:\sqlite
set LIBS=C:\sqlite
set SQLITE3SRCDIR=C:\sqlite
set QTDIR=C:\Qt\Qt5.7.0n
set PATH=%PATH%;C:\Qt\Qt5.7.0n\bin;C:\Qt\Src\qtbase\bin;C:\winflex;C:\Ruby23-x64\bin;C:\Python27;C:\mingw-w64\i686-1\mingw32\bin;C:\icu\bin;C:\Program Files (x86)\GnuWin32\bin
set QMAKESPEC=win32-g++
call perl.exe .\build-webkit --qt --release
编译qtwebkit:
$ cd C:\ Qt \ Src \ qtwebkit \ Tools \ Scripts
$ ./compile.bat
$ cd C:\ Qt \ Src \ qtwebkit \ WebKitBuild \ Release
$ C:\ mingw-w64 \ i686-1 \ mingw32 \ bin \ mingw32-make.exe安装
成功编译和安装后,应该可以使用qtwebkit编译应用程序。
建立静态QT
编辑文件C:\ Qt \ Src \ qtbase \ compile.bat并通过构建。
...
call C:\Qt\Src\qtbase\configure.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中的configure上通知您有关“需要ICU”的信息。
2) flex: unknown flag '-'. For usage, try
在这种情况下,您应该使用正确的Flex版本“ win_flex”。您应该重命名文件以使用win_flex而不是flex(和bison)。
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
通过某些测试或MiniBrowser时可能发生。您可以在文件中搜索“ UIProcess / API / qt”和“ MiniBroswer”,并将其从Makefile和其他文件中删除,然后重新开始构建。
链接
构建Qt5:https ://wiki.qt.io/Building_Qt_5_from_Git Qt WebKit构建
例如如何:https : //trac.webkit.org/wiki/BuildingQtOnWindows ICU
使用GNU构建:https : //wiki.qt.io/Compiling-ICU-with-MinGW
Alex引用的社区版本仅在Qt 5.9之前可用。如果要使用较新的Qt5(当前版本为5.11),则另一个选择是将“ QtWebKit”移植到“ QtWebEngine”。
对于Windows,我只是下载了https://github.com/annulen/webkit/releases/tag/qtwebkit-tp5并将文件夹复制到相关的Qt安装文件夹。现在,我可以将MinGW Qt5.8与最新的Webkit一起使用。感谢Konstantin和这个项目的所有贡献者!
只需注意一件事-我需要在Qt中使用发布配置。
对我有用的是两个答案的组合,我使用了@ user1251007建议的内容+此命令
sudo apt-get install libqt5websockets5-dev
在此处找到此命令行:链接到stackoverflow响应