如何配置CLion IDE以使用Qt框架?

87

如何为Qt框架配置CLion IDE?这个IDE与Qt兼容吗,还是有其他与Qt兼容的IDE?

我只是想尝试使用除Qt Creator之外的其他工具。


12
我认为这个问题不值得被这样的负评。虽然答案可以通过谷歌搜索找到,但需要点击相当多的链接。找到这个让我更快地得到答案。 - JcKelley
2
@Claudio,问题不是关于哪个IDE是最好的,而是CLion如何与Qt一起工作。你的回答没有帮助回答这个主题,也没有帮助那些想要使用Qt而又不想使用Qt Creator的人。 - Razakhel
请注意,现在Jetbrains有一个官方页面关于此事:https://www.jetbrains.com/help/clion/qt-tutorial.html - xeruf
7个回答

60
我和你一样绝望,直到我读了这个Quora讨论。它对我非常有效!
总结一下,有两个主要步骤:
首先,CLion使用CMake编译您的代码。它基于CMake配置文件(例如“CMakeLists.txt”)。您必须添加基于Qt的CMake命令(带有“find_package”和“target_link_libraries”的行):
cmake_minimum_required(VERSION 3.5)
project(myqtproject)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp)
find_package(Qt5Widgets REQUIRED)                 <-- this line

add_executable(myqtproject ${SOURCE_FILES})

target_link_libraries(myqtproject Qt5::Widgets)   <-- this line

其次,CLion必须使用Qt安装的cmake二进制文件。为此,请转到: “首选项”->“构建、执行、部署”->“CMake”,并在“CMake选项”中添加Qt使用的CMake路径,该路径应位于安装Qt的目录中。例如,在OSX上:
-DCMAKE_PREFIX_PATH=/Users/edouard/Qt/5.7/clang_64/lib/cmake

您可以通过在main.cpp中编写一个小的测试脚本来测试一切是否正常运行:
#include <QApplication>
#include <QDebug>

using namespace std;

int main() {
    qDebug() << QT_VERSION_STR;
    return 1;
}

应该显示类似于以下内容:
/Users/edouard/Library/Caches/CLion2016.2/cmake/generated/myqtproject-89a4132/89a4132/Debug/untitled
5.7.0

Process finished with exit code 1

更新

我卡在了添加Qt5模块的问题上(例如QSql)。您可以通过在CMakeLists.txt中添加以下内容来解决此问题:

find_package(Qt5Sql REQUIRED)

紧接着另一个find_package之后,在最后一行添加:
target_link_libraries(myqtproject Qt5::Widgets Qt5::Sql)

你可以对所有其他Qt5模块执行此操作。

40

更新

现在Jet Brain官网上有一个官方教程:

https://www.jetbrains.com/help/clion/qt-tutorial.html

原回答

这种方法是用于最新的Qt版本中最简单的方法之一。

Qt:    5.10.1
CLion: 2018.1.2
GDB:   8.1

项目设置

CLion 中:

  1. 创建一个 C++ 可执行文件/ 项目
  2. 使用这个示例 "CMakeLists.txt" 来创建使用 QtCoreQtWidgetsQtQuick 的常见控制台/图形界面项目。

CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)
project(PROJECT_NAME)

set(CMAKE_CXX_STANDARD 14)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_PREFIX_PATH "PATH_TO_QT/QT_VERSION/QT_ARCH/lib/cmake")

find_package(Qt5Core REQUIRED)
find_package(Qt5Widgets REQUIRED)
find_package(Qt5Quick REQUIRED)

add_executable(PROJECT_NAME main.cpp MainWindow.cpp MainWindow.h qml.qrc)

target_link_libraries(PROJECT_NAME Qt5::Core)
target_link_libraries(PROJECT_NAME Qt5::Widgets)
target_link_libraries(PROJECT_NAME Qt5::Quick)
  • 要使moc能够对资源文件和内部文件(如qml文件和文本文件)进行处理并使其可访问,应将资源文件(.qrc)添加到add_executable列表中。

  • 在运行时,应该将qml文件包含在一个qrc文件中,并使用QQmlApplicationEngine进行加载。

调试器:

为了在Qt类型的调试会话中具有可读性,必须在系统上安装新的GDB并提供漂亮的打印机:

适用于Qt5的漂亮打印机:

1- Lekensteyn Qt5 Pretty Printers (可用):

地址: https://github.com/Lekensteyn/qt5printers

设置: ~/.gdbinit

python
import sys, os.path
sys.path.insert(0, os.path.expanduser('~/.gdb'))
import qt5printers
qt5printers.register_printers(gdb.current_objfile())
end

2- 官方(不可用!):

"PATH_TO_QT/QT_VERSION/QT_ARCH/Tools/QtCreator/share/qtcreator/debugger/"

设置:~/.gdbinit

如包含的 readme 文件所述(但不起作用!):

python sys.path.insert(1, '<path/to/qtcreator>/share/qtcreator/debugger/')
python from gdbbridge import *

外部工具

在“文件 -> 设置 -> 工具 -> 外部工具”中,添加4个外部工具:

Qt Creator:

Program:   "PATH_TO_QT/QT_VERSION/QT_ARCH/Tools/QtCreator/bin/qtcreator"
Arguments: $FilePath$

用户界面设计师:

Program:   "PATH_TO_QT/QT_VERSION/QT_ARCH/lib/bin/designer")
Arguments: $FilePath$

更新:

Program:   "PATH_TO_QT/QT_VERSION/QT_ARCH/lib/bin/lupdate")
Arguments: $FilePath$ -ts $FileNameWithoutExtension$.ts

语言学家:

Program:   "PATH_TO_QT/QT_VERSION/QT_ARCH/lib/bin/linguist")
Arguments: $FilePath$

现在你可以右键点击这些文件类型并选择外部工具:

  1. 对于 .ui 文件,选择 Qt Creator/Designer 并开始设计用户界面
  2. 对于 .qml 文件,选择 Qt Creator 并在 QML 编辑器中设计用户界面
  3. 对于 .qrc 文件,选择 Qt Creator 并使用资源编辑器
  4. 对于 .cpp/.ui 文件,选择 LUpdate 来创建翻译文件
  5. 对于 .ts 文件,选择 Linguist 并开始翻译

代码自动格式化

如果在 Qt Creator 中你使用了像“Uncrustify”这样的代码美化插件来在保存源文件时自动美化代码,那么:

  1. 安装插件“Save Actions
  2. 在“文件 -> 设置 -> 保存操作”下
  3. 勾选:
  4. 激活保存操作
  5. 重构文件
  6. 为了最佳性能,请取消勾选:
  7. 组织导入

6
如Tom Lank所述,Qt项目现在可以使用CMake进行管理和构建,这使得CLion非常方便。 Qt5的CMake手册对此进行了描述。Qt在这里提供了很多魔法,并且在CMake文档中有更好的解释。
Qt CMake手册或上述内容没有提到的一件事是,您还需要以下行:
set(CMAKE_AUTOUIC ON) # if you have any .ui files
set(CMAKE_AUTORCC ON) # if you have any .qrc files 

所有对set()的调用都应该放在find_package(Qt5Widgets REQUIRED)这行代码之前。此外,将任何.ui或.qrc文件与您的.cpp文件一起作为add_executable()的依赖项包含进去。
最初,我从浏览网页时感到非常困惑,但是据我所知,您不需要任何对qt_*()qt5_*()的调用,因为它们已经过时了。
要测试您的CMakeLists.txt是否正确工作,您可以尝试在Qt Creator中构建,通过将CMakeLists.txt作为项目加载并进行构建。
确认后,您可以在CLion中将CMakeLists.txt文件作为项目加载。很可能,您需要在find_package之前使用类似于以下内容的代码告诉CMake在哪里找到您的Qt软件包:
set(CMAKE_PREFIX_PATH "C:/Qt/5.9/msvc2015_64")

最后,如果您正在运行/构建Windows,Qt不再预先构建GCC/Mingw32库。 您需要使用Visual Studio进行构建。 幸运的是,CLion现在试验性地支持Visual Studio,我发现它适用于Qt项目; 只需确保将体系结构(在“设置” ->“构建,执行,开发” ->“CMake”下)设置为x86_amd64,以在64位模式下构建并与Qt的预构建库兼容。

所有这些都经过了CLion 2017.1,Qt 5.9和Visual Studio 2015编译器的测试。


这对我来说是最简单和最快的解决方案。 - Anubis

2

2
您可以在CLion中构建QT应用程序。 QT提供了CMake模块,负责处理所有细节。
以下CMake脚本构建示例应用程序“动态布局示例”。
cmake_minimum_required(VERSION 3.7)
project(qtlayoutexample)
set(CMAKE_CXX_STANDARD 14)

# Find QT packages
find_package(Qt5Widgets)

# Add the include directories for the Qt 5 Widgets module to
# the compile lines.
include_directories(${Qt5Widgets_INCLUDE_DIRS})

# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)

# Add compiler flags for building executables (-fPIE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")

qt5_generate_moc(main.cpp main.moc)

# Tell CMake to create the qtlayoutexample executable
add_executable(qtlayoutexample main.cpp dialog.cpp main.moc)

#Link the qtlayoutexample executable to the Qt 5 widgets library.
target_link_libraries(qtlayoutexample Qt5::Widgets)

关于使用CMake构建Qt应用程序的更多信息,请参阅此链接

1
你可以使用CMake作为构建工具,在VC、Eclipse、CLion等IDE中轻松开发Qt。CMake将为每个IDE生成项目文件。我以这种方式使用了多个IDE,但最终我仍然更喜欢使用Qt Creator。

0
你需要做的唯一一件事就是将QT安装路径 ..Qt\5.10.1\mingw53_32\bin; 添加到你的PATH环境变量中。别忘了在此之后重启电脑,因为CLion无法刷新路径,只有完全重启电脑才能帮助解决问题。

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