序言

Qt版本不断更新,QtCreator也不断更新。在Qt4和Qt5时代,我一直认为开发Qt最好的IDE就是自带的QtCreator,可是时至今日,到了Qt6时代,QtCreator已经都12.0.1版本了,不仅没变的更好用,反而变得更难用了。一方面可能是我被JetBrains全家桶和各种AI代码提示插件给惯坏了,另一方面也可能是开源版本的QtCreator没有被重视。好在CLion支持Qt开发,相关功能越来越完善,使用起来也越来越方便,同时借助CLion的语法提示和各种插件能大大提高开发效率。网上关于CLion搭建Qt开发环境的教程很多,但不少已经很旧了,而且还有一些坑,本教程采用目前最新版的CLion和Qt6演示最新的搭建流程,希望给大家提供参考。

版本说明

  • CLion版本:2023.3.3
  • CMake版本:3.27.8(CLion内置绑定版本)
  • Qt6版本:6.6.1(MSCV2019 64-bit)、6.6.1(MinGW 11.2.0 64-bit)
  • VS版本:2022
  • MinGW版本:11.2.0 64-bit

CLion为当前最新版本,Qt为当前最新LTS版本,VS为2020 Pro版本。Qt安装时在Qt6.6.1下方勾选MSCV2019 64-bit和MinGW 11.2.0 64-bit两个Qt SDK组件,在Developer and Designer Tools下方勾选安装Qt自带的MinGW 11.2.0 64-bit编译器。对于不想安装VS的同学,可以下载安装Microsoft C++ 生成工具,只包含MSVC,不包含VS软件。

VS版本流程

在Windows上,推荐使用MSVC构建Qt程序,虽然MinGW也可以,但笔者的开发经历告诉我MSVC更合适一些。

基本配置

1. 创建Qt项目

新建项目,选择Qt微件可执行文件,Qt版本选择6,C++版本选择17。



选择Qt CMake前缀路径为Qt对应SDk目录,不用选到bin目录,只要选择上级目录即可,这里选择的是MSVC版本的。



2. 设置CLion工具链

在设置->构建、执行、部署->工具链选项中创建Visual Studio工具链。



工具集路径设置为VS安装文件夹位置,2020 Pro版本为2020/Professional,其他版本可自行尝试,只要CLion检索到工具链版本信息就说明添加正确了。可以使用提升键将Visual Studio工具链提到第一位,成为CLion的默认工具链。



如果已经将Visual Studio工具链设置成默认工具链,那么Cmake默认工具链就是默认的Visual Studio工具链,如果默认是其他工具链,请换成Visual Studio工具链。构建类型可以在这里指定或者直接在Cmake文件中配置。生成器选择默认或者其他,个人推荐使用Ninja。



3. 运行程序

此时直接运行,程序已经可以跑起来了。示例代码为显示一个按钮:



4. 进行开发

创建UI文件,进行开发,类名设置为MainWindow,CLion为自动添加关联的cpp和hpp文件,并自动追加到CMake文件中。







双击UI文件打开QtDesigner进行UI编辑,添加按钮控件,保存关闭。



如果CLion提示找不到UI文件生成的头文件,执行一下构建即可。





手动创建qrc和rc文件,制作程序exe图标,和程序运行图标。qrc文件其实就是XML文件,节点qresource是一组资源,prefix是所有的资源前缀,file是其下的文件路径。





在CMake文件中添加这两资源文件。



进行简单的代码编写,主要是设置窗口图标,以及给按钮添加槽函数。



删除示例中的显示按钮,改为显示我们创建的MainWindow。



编译运行即可发现exe图标和程序运行图标已经正常显示。







但是点击按钮,可以发现CLion控制台没有显示qDebug()的输出消息,这里需要设置一下,打开运行->编辑配置,添加环境参数QT_ASSUME_STDERR_HAS_CONSOLE=1保存后重新运行即可发现功能已经正常。点击按钮,控制台输出PUSHED。





至此整个项目已经可以正常开发了,但是整个文件夹的文件和资源文件都混在一起,没有做好分类,我们需要重构一下文件目录。

重构目录

创建src目录,将cpp文件都放到src中(main.cpp一般不放);创建include目录,将所有头文件放入include中;创建form目录,将所有ui文件放入form中;创建resource目录,将所有资源文件放入resource中。



直接拖拽,CLion会直接帮你重构,CMake文件会直接改动。



编译运行,发现直接报错,提示AUTOUIC错误。



这是因为默认的AUTOUIC查找目录是mainwindow.cpp所在的目录,然后发现找不到所以报错,我们修改一下AUTOUIC查找路径为form文件夹所在目录。



运行即可解决问题。但是很多时候当项目较大时,文件很多,我们不可能一个一个手动添加。所以我们需要手动修改一下,按照正常的模板编写。



编译运行发现报错,提示链接错误。



如果在网上查询会告诉你如果在hpp文件中类的定义含有Q_OBJECT字段,Qt会创建相应的moc_xxx.cpp文件用于实现信号与通信机制,报错是由于没有正常生成对应的moc_xxx.cpp。我们打开CMake的编译输出文件夹可以发现,mocs_compilation.cpp的确啥也没有。



实际上mainwindow.hpp中的类是有Q_OBJECT,正常应该生成moc_mainwindow.cpp文件的,也就是说CMake在AUTOMOC中并没有检索到我们的hpp文件。但是不同于AUTOUIC可以指定搜索路径,CMake中AUTOMOC没有这个属性可以设置,那怎么解决?这里我们对比一开始没有重构目录时可以运行的情况,可以发现,如果hpp直接写在add_executable中就可以运行,但是使用include_directories就不行,也就是说include_directories和AUTOMOC并不关联。既然如此我们手动添加所有hpp文件。



编译运行,果然一切正常。打开CMake编译产生的文件夹,发现对应的moc_mainwindow.cpp也正常生成。

MinGW版本流程

MinGW版本的流程和VS版本基本一致,唯一不同的在3个地方,一是创建项目选择的Qt CMake前缀,二是CLion工具链配置,三是CLion CMake配置。

  1. 创建项目选择的Qt CMake前缀

  2. CLion工具链配置

  3. CLion CMake配置



    其他所有流程和配置参考VS版本即可。

CLion搭建Qt开发环境,并解决目录重构问题(最新版)的更多相关文章

  1. windows下VisualStudio和QtCreator搭建Qt开发环境

    一.简介 集成开发平台IDE都有各自的长处,编写Qt程序可根据自己的喜好来选择相应的IDE.下述文章都是装载博友的文章,其中有很多细节还得自己调整. 二.详解 1.VisualStudio搭建Qt开发 ...

  2. 第一章 搭建Qt开发环境

    第一章 搭建Qt开发环境 1.到http://download.qt-project.org/archive/上下载Qt的源码包.我下载的是qt-everywhere-opensource-src-4 ...

  3. Windows+QT+Eclipse+MinGW搭建QT开发环境详细教程

     Windows+QT+Eclipse+MinGW搭建QT开发环境详细教程 一.准备工具: QT-SDK for Windows:http://get.qt.nokia.com/qtsdk/qt-sd ...

  4. 如何在 VS Code 中搭建 Qt 开发环境

    前言 VS Code 高大上的界面.强大的智能联想和庞大的插件市场,着实让人对他爱不释手.虽然可以更改 Qt Creator 的主题,但是 Qt Creator 的代码体验实在差劲.下面就来看看如何在 ...

  5. Ubuntu 12.04下搭建Qt开发环境

    http://download.qt.io/official_releases/qt/ Ubuntu 环境下Gtk与Qt编译环境安装与配置(系统环境是Ubuntu 12.04) 1.配置基础开发环境G ...

  6. Fedora15下搭建QT开发环境及编译QT

    看了不少linux上编译qt的文章,实际上直接通过yum 安装qt是最方便的,请参考<yum安装qt> 不过初步接触fedora,为了了解一下如何在linux上编译.安装开源代码,所以必须 ...

  7. Fedora15下搭建QT开发环境及编译QT(提前一键安装完,qt编译所有必需库 yum install gcc-c++ libXtst-devel freetype freetype-devel fontconfig-devel libXrender-devel )

    看了不少linux上编译qt的文章,实际上直接通过yum 安装qt是最方便的,请参考<yum安装qt> 不过初步接触fedora,为了了解一下如何在linux上编译.安装开源代码,所以必须 ...

  8. window下搭建qt开发环境编译、引用ace

    工作中经常用到ace.tao等,在windwo下的c++开发工具基本上就是vs20xx这些工具,还有些就是类似编辑工具例如:source insight等,前者比较大,打开.编译运行比较慢,二期针对a ...

  9. 【Tools】VS搭建Qt开发环境

    00. 目录 @ 目录 00. 目录 01. 概述 02. Visual Studio 2019安装 03. Qt6安装 04. qt-vsaddin插件下载 05. qt-vsaddin插件安装 0 ...

  10. 利用XAMPP搭建PHP开发环境,解决443端口被占用

    为了方便,作为学习使用的PHP环境,我们可以直接使用Apache+mysql+php集成开发环境.这样的集成软件有appserv和xampp,这里我们以xampp为例. 首先下载xampp软件,下载地 ...

随机推荐

  1. Solon2 的 Bean 生命周期

    Solon 框架的 Bean 是被容器托管的,所以它的生命周期只限定在容器内部: 时机点 说明 补充 AopContext::new() 是在应用初始化时执行 ::new() AopContext:: ...

  2. Solon2 开发之IoC,九、自定义注解开发汇总

    1.定义构建能力注解,比如@Controller 注解类: @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Docum ...

  3. Mac 设置 JAVA_HOME

    Mac /System/Library/Frameworks/JavaVM.framework/Home/bin/java: No such file or directory 查找JAVA_HOME ...

  4. 用 Python 开发了一个 PDF 抽取Excel表格的小工具

    大家好哇 从 PDF 里 copy 表格时,粘贴出来后格式都是错乱的.这麻烦事交给 Python 再合适不过里,我开发了一个从 PDF 抽取表格另存为 Excel 文件的应用,我把它部到 huggin ...

  5. 揭秘2022冬奥黑科技,阿里云视频云「Cloud ME」如何实现全息会面?

    2022北京冬奥会本是一届非凡的存在,这是有史以来第一次将奥运会所需的全部核心系统全面上云,以数字化技术创造奥运的新纪元. 但绿色奥运不止如此,在面临 Covid-19 限制和物理隔阂之下,千里之外, ...

  6. 6、SpringBoot-mybatis分页实现pagehelper

    系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...

  7. vue学习笔记 六、ref定义单个数据

    系列导航 vue学习笔记 一.环境搭建 vue学习笔记 二.环境搭建+项目创建 vue学习笔记 三.文件和目录结构 vue学习笔记 四.定义组件(组件基本结构) vue学习笔记 五.创建子组件实例 v ...

  8. opensips简介

    概述 在众多的sip服务器中,主要有俩大类,一类侧重于媒体/业务服务器,比如freeswitch/asterisk,另一类侧重于代理/负载服务器,比如opensips/kamailio. 今天我们对o ...

  9. 如何在Python中的子进程获取键盘输入

    场景:在Python中使用multiprocessing模块的Process创建子进程,试图在子进程中获取键盘输入. 使用input() 在子进程中使用input()会弹出报错信息:EOFError: ...

  10. springBoot 整合 hikari

    Hikari是一款非常强大,高效,并且号称"史上最快连接池".并且在springboot2.0之后,采用的默认数据库连接池就是Hikari.不需要引入依赖,已经在SpringBoo ...