项目错误:QT中存在未知模块:webkitwidgets。

85

我正在将代码从Qt4转移到Qt5,根据建议,我在.pro文件中添加了以下行:as suggested:

我正在将代码从Qt4转移到Qt5。如建议所示,我在我的.pro文件中添加了以下行:

QT += webkitwidgets

然而,当我运行qmake时,我遇到了这个错误:

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

我正在Ubuntu 12.04 LTS上进行开发,并按照说明安装了Qt。


1
如何在macOS中修复此问题 - https://dev59.com/KL34oIgBc1ULPQZF4c7e?noredirect=1#comment128228415_72589559 - samshers
7个回答

126

您需要安装webkitwidgets库。

在Ubuntu上,请在终端中尝试以下操作:

sudo apt-get install libqt5webkit5-dev

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

sudo apt-get install qt5-qtwebkit-devel

或者在 Fedora 上,通过 dnf 安装:

sudo dnf install qt5-qtwebkit-devel

11
有没有针对OS X的解决方案? - Ionică Bizău
4
嘿,我尝试了这个,但它仍然显示相同的错误。有解决方案吗? - Wboy
13
Windows 怎么样? - jjxtra
@Muadh 程序员:问题说明需要 Ubuntu 的解决方案,因此我的答案是针对该操作系统的。然而,其他答案涉及 Windows。如果您对它们的解决方案有疑问,可以在他们的答案下发表评论。 - user1251007
如何在macOS中修复此问题 - https://dev59.com/KL34oIgBc1ULPQZF4c7e?noredirect=1#comment128228415_72589559 - samshers

12
如果您需要为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(二进制文件)(带有工具的类Unix shell),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 install

4)带有ICU支持的构建Qt(在configure中设置“-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:\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中运行命令的示例:

$ cd C:\Qt\Src\qtbase

$ ./compile.bat

通过编译后,使用以下命令将文件安装到BUILD_DIR(安装Qt文件):

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

Qt应该开始安装了

5)下载Qtwebkit源代码到C:\Qt\Src\qtwebkit。使用下面的编译脚本使用新的Qt 5.7.0构建和C:\Qt\5.7.0n中的ICU编译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 install

成功编译和安装后,应该可以使用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进行构建。在qtwebkit的配置中也会提示"需要ICU"。

2)flex:未知标志'-'。有关用法,请尝试

在这种情况下,您应该使用正确版本的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


你好,我卡在了C:\Qt\Src\qtbase\compile.bat这个地方。它报错:"C:\qt5.7-source\qtbase>jom.exe -j 4 Error: File Makefile doesn't exist." 你知道可能是什么问题吗? - tonisives
1
应用程序开发人员27,请确保批处理文件中的前一个命令已成功执行: “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” - Alex
谢谢你的回答!现在我认为通过qtbase\compile.bat已经有了一些进展。你有什么想法可能会导致最新的错误 "命令语法不正确"?http://pastebin.com/pCLXvs22 - tonisives
应用程序开发人员27,制作版本可能与mingw或Visual Studio版本不同,您使用什么来编译?检查您的make二进制文件以获取项目路径并确保其正确。 - Alex
1
我从未让它正常工作。但最终找到了这个 https://github.com/annulen/webkit/releases/tag/qtwebkit-tp5,我可以使用更新的 WebKit 和 Qt 5.8。 - tonisives
如何在macOS中解决这个问题 - https://dev59.com/KL34oIgBc1ULPQZF4c7e?noredirect=1#comment128228415_72589559 - samshers

3

Alex提到的社区构建版本只适用于Qt 5.9之前的版本。

如果您想使用更新的Qt5(当前版本为5.11),那么另一种选择是将“QtWebKit”移植到“QtWebEngine”。

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


如何在macOS中修复此问题 - https://dev59.com/KL34oIgBc1ULPQZF4c7e?noredirect=1#comment128228415_72589559 - samshers

1
对于CentOS,你需要先安装epel-release,然后再安装qt5-qtwebkit-devel
sudo dnf install epel-release
sudo dnf install qt5-qtwebkit-devel

1
对于Windows,我只需下载https://github.com/annulen/webkit/releases/tag/qtwebkit-tp5并将文件夹复制到相关的Qt安装文件夹中。现在我可以使用MinGW Qt5.8与最新的webkit。感谢Konstantin和所有为该项目做出贡献的人!唯一需要注意的是 - 我需要在Qt中使用发布配置。

你能告诉我你把这些文件粘贴到哪个相关的文件夹里了吗? - taimoor1990

1

我通过从之前的安装版本5.5中复制webkit和webkitwidgets pri文件,使其正常工作。

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


0

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

sudo apt-get install libqt5websockets5-dev

在这里找到命令行:链接到stackoverflow的回答

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接