常见问题
您还可以在 "已知问题"和 "如何操作"部分或 "调试"等特殊领域的 "故障排除 "部分找到问题的答案。
一般问题
Qt Creator MinGW 自带的版本是否应与 Qt 一起使用?
请使用针对 Qt 版本构建的版本。
Qt Creator 没有找到辅助应用程序,如 Git、Ninja 或编译器。我该怎么办?
在启动Qt Creator 时,确保应用程序在系统 PATH 中。还可选择 "首选项 "检查为应用程序指定的设置。许多插件都指定了所需工具的路径或运行环境。
您还可以指定全局或特定项目或工具包查找和运行工具的环境,如编辑环境设置中所述。
当你从桌面而非终端应用程序启动Qt Creator 时,这一点尤为重要,比如 macOS 上从 Finder、Dock 或 Spotlight 启动,或 Gnome 上从 Dock、Dash 或活动概览启动。在这种情况下,启动的应用程序不会继承你为 shell 设置的环境(终端应用程序使用的环境),而是继承launchd
(macOS) 或gnome-shell
(Gnome)。这意味着你为终端设置的路径,如 macOS 上用于 Homebrew 的/usr/local/bin
或/opt/homebrew/bin
,如果从桌面启动Qt Creator ,将无法自动使用。
已报告的问题是否已得到解决?
你可以在Qt 项目 Bug 跟踪器中查找任何问题。
Qt Widgets 设计器集成问题
为什么自定义部件不能在Design 模式中加载,即使它能在独立的Qt Widgets Designer 中运行?
Qt Widgets Designer 从标准位置获取插件,并加载与其构建密钥匹配的插件。单机版和集成版 Designer 的位置不同。Qt Widgets
更多信息,请参阅添加Qt Widgets Designer 插件。
QML 和Qt Quick 问题
为什么我的 QML 导入下面有一条红线,即使我有该模块?
默认情况下,Qt Creator 会在 Qt 的 QML 导入路径中查找 QML 模块。有时,它并不能正确识别,你需要告诉它模块在哪里。当使用 qmake 作为构建系统时,请在应用程序的.pro
文件中指定QML_IMPORT_PATH
。使用 CMake 时,在 CMakeLists.txt 文件中添加set
命令。
这样还能完成 QML 代码并删除错误信息。
下面的例子说明了如何指定 qmake 项目的导入路径,以便在不同目标平台的构建和运行工具包之间切换时能正常工作:
TEMPNAME = $${QMAKE_QMAKE} MY_QTPATH = $$dirname(TEMPNAME) QML_IMPORT_PATH += $$MY_QTPATH/../qml message("my QML Import Path: "$$QML_IMPORT_PATH)
有关如何为 CMake 项目设置导入路径的更多信息,请参阅导入 QML 模块。
当Qt Creator 抱怨缺少 OpenGL 支持时,我该怎么办?
Qt Creator 的某些部分(如QML Profiler )使用Qt Quick 2,它依赖 OpenGL API 进行绘图。遗憾的是,使用 OpenGL 可能会导致一些问题,尤其是在远程设置和使用过时驱动程序的情况下。在这种情况下,Qt Creator 会在控制台显示与 OpenGL 相关的错误信息,或将其记录在 Windows 调试器日志中。
根据设置的不同,修复和解决方法也不尽相同。最后,您可以禁用受影响的插件。
虚拟机
尝试在虚拟机设置中启用3D 加速。对于 VirtualBox,还请确保已安装 Guest Addons,包括实验性Direct3D 支持。
Windows
默认情况下,Qt Quick 使用 Direct3D 11。如果遇到问题,请尝试更新显卡驱动程序或更新 DirectX 版本。运行dxdiag.exe
检查是否确实启用了Direct3D 加速。
您也可以尝试将QSG_RHI_BACKEND
环境变量设置为vulkan
或opengl
。详情请参见Qt XML for Windows - Graphics Acceleration。
Unix
运行glxgears
快速检查 OpenGL 是否能正常工作。查看glxinfo
的输出,了解 OpenGL 驱动程序和渲染器等详细信息(在应用程序的输出中搜索OpenGL)。
如果使用的是 Mesa 驱动程序,可以通过设置LIBGL_ALWAYS_SOFTWARE
环境变量来强制在软件中渲染 OpenGL。
禁用插件
您可以禁用Qt Creator 插件,但会损失部分功能:
- 使用
-noload QmlProfiler -noload QmlDesigner
参数从命令行启动Qt Creator 。 - 选择Help >About Plugins ,永久禁用插件。
帮助问题
Qt API 参考文档丢失,上下文帮助找不到主题。我该怎么办?
用以下命令安装 Qt 版本和 Qt 文档 Qt Online Installer.
要查看已安装的文档(.qch 文件)和添加文档,请转到首选项>Help >Documentation 。更多信息,请参阅添加外部文档。
调试器问题
有关调试器故障排除的信息,请参阅调试器故障排除。
如果我可以选择 GDB 版本,我应该使用哪个?
在 Linux 和 Windows 上,使用安装Qt Creator 和 Qt XML 时安装的支持 Python 的 GDB 版本。在 macOS 上,GDB 不再受官方支持。要构建自己的支持 Python 的 GDB,请按照 "构建 GDB"中的说明操作。
您必须使用 Python 2.6 或 2.7 版本。
有关详细信息,请参阅支持的调试器。
如何在Qt Creator 中生成核心文件?
要在调试时触发生成核心文件的 GDB 命令,请访问View >Views >调试器日志。在Command 字段中,输入gcore
并选择Enter。核心文件将在当前工作目录下创建。您可以在命令参数中指定文件的其他位置,包括相对路径或绝对路径。
编译器问题
如何使用Qt Creator 充分利用多核 CPU?
在 Linux 和 macOS 上,进入Projects 模式,在Build Settings 中选择您的配置,找到Build Steps ,然后添加以下值,其中<num>
是您 CPU 的内核数量:-j <num>
在 Windows 上,nmake 不支持-j
参数。取而代之的是jom。您可以从Qt Downloads 下载预编译版本的 jom。将 jom.exe 放在 %PATH% 下的某个位置。访问Build Settings 并将 jom.exe 设置为 make 命令。
注意: 与 GNU make 不同,jom 会自动检测你的内核,并根据 CPU 的内核数量生成尽可能多的并行进程。如上所述,您可以使用-j
参数覆盖这一行为。
Qt 安装问题
我从二进制软件包中安装的 Qt 无法使用 QSslSocket。我该怎么办?
二进制软件包中的 Qt 在构建时定义了 QT_NO_OPENSSL。重新构建是可行的。有关详细信息,请参阅http://www.qtcentre.org/threads/19222-Qssl。
在 Ubuntu 或 Debian 上需要发行版中的哪些开发包?
sudo apt-get install libglib2.0-dev libsm-dev libxrender-dev libfontconfig1-dev libxext-dev
如果您使用 QtOpenGL,您还需要:
sudo apt-get install libgl-dev libglu-dev
平台相关问题
Qt Creator 中应用程序输出显示在哪里?
在 Unix(Linux 和 macOS)上: qDebug()
和相关函数使用标准输出和错误输出。运行或调试程序时,可以在应用程序输出(Application Output)中查看输出。
对于需要输入的控制台应用程序,请选择Projects >Run Settings >Run in terminal 。要指定要使用的终端,请选择首选项>Environment >System 。要使用内部终端,请选择首选项>Terminal >Use internal terminal 。
在 Windows 上: 控制台应用程序和图形用户界面应用程序的输出显示方式不同。
对于 qmake 项目,.pro 文件中的CONFIG += console
设置指定使用其他运行时将应用程序作为控制台应用程序构建。
这是 CMake 项目的标准行为。要在 Windows 上创建 GUI 应用程序或在 macOS 上创建应用程序捆绑包,必须在 CMakeLists.txt 文件中为qt_add_executable命令指定WIN32
或MACOSX_BUNDLE
属性。
运行控制台应用程序时,可以在调用应用程序的控制台窗口中查看输出。如果调用的应用程序是图形用户界面应用程序(例如Qt Creator 的发行版),则会打开一个新的控制台窗口。对于此类应用程序,qDebug()
和相关函数使用标准输出和错误输出。
我们建议控制台应用程序选择Projects >Run Settings >Run in terminal 。
对于 GUI 应用程序,qDebug()
和相关函数使用 Windows API 函数OutputDebugString()
。输出显示在Application Output 中。不过,Qt Creator 一次只能显示一个源的输出,以便正确显示。您可以使用外部调试输出查看器(如Windows 版 DebugView)来显示 GUI 应用程序的输出。
关于新功能的问题
所要求的功能会实现吗?
如果是计划中的功能,您可以在任务跟踪器中看到。如果功能已经实现,则会在即将发布的版本的更改文件中提及。
为什么Qt Creator 不为编辑器使用标签页?
这个问题时常出现,因此我们仔细考虑了这个问题。以下是我们不使用标签页的主要原因:
- 选项卡不能缩放。如果打开 5 到 6 个编辑器,标签页还能正常工作;如果打开 10 个编辑器,标签页就会变得累赘;如果需要比标签栏更大的水平空间,界面根本无法工作。
- 选项卡无法适应你的工作设置。
- 常见的解决方案是让用户可以重新排列标签。现在,用户必须管理标签页,而不是编写代码。
- 标签迫使你限制打开编辑器的数量,否则你就会感到困惑。
请考虑以下用例:开发人员希望切换编辑器。
事实上,开发人员并不想切换编辑器,但为了完成任务可能不得不这样做。我们需要搞清楚他们的任务是什么,以便在执行任务时为开发人员提供更好的导航方式。
在许多使用案例中,一个常见的因素就是在处理一组打开的文件时切换编辑器。在处理文件 A 和 B 时,用户有时需要查看文件 C。他们可以选择Ctrl+Tab在文件之间移动,并根据文件类型在正确的编辑器中打开文件。列表按最后使用时间排序。
通常情况下,用户也会处理多个相关的类或函数,尽管它们是在不同的文件中定义或声明的。Qt Creator 为此提供了两个快捷方式:F2用于跟踪光标下的符号,Ctrl+Shift+U用于查找对该符号的引用。
此外,开发人员还可以
- 选择F4在标题和源代码之间切换。
- 选择Alt+Left在导航历史中向后移动。
- 使用定位器 (Ctrl+K) 简单地告诉Qt Creator 要去哪里。
定位器可以用来打开文件,但打开文件也只是完成任务的一个步骤。例如,请考虑以下用例:修复 SomeClass 中的 AFunction,该函数来自 someclass.cpp/someclass.h。
如果使用标签式用户界面,开发人员会在标签栏中搜索 someclass.cpp,然后搜索::AFunction
,却发现该函数不在该文件中。然后,他们会在标签栏中搜索 someclass.h,发现函数是内联的,解决了问题,然后就忘了自己是从哪里来的。
有了Qt Creator ,开发人员可以输入Ctrl+K m AFun
查找函数。通常情况下,他们只需输入 3 至 4 个字符的函数名。然后,他们就可以解决问题,并选择Alt+Back 回到原来的位置。
其他定位器过滤器包括:c
(类)、:
(所有符号)以及(感谢社区贡献).
(当前文件中的符号)。
Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.