序言

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. DevSecOps: CI/CD 流水线安全的最佳实践

    上一篇文章我们了解了 IAST 及其优势.工具类型以及重要性. 本期文章将为你介绍 CI/CD 流水线安全的最佳实践. ✦ ✦ CI/CD 流水线是指由持续集成(Continuous Integrat ...

  2. Java 事件链

    Java中的事件机制的参与者有3种角色: 1. event object:就是事件产生时具体的"事件",用于listener的相应的方法之中,作为参数,一般存在于listerner ...

  3. AtCoder Beginner Contest 335 总结

    ABC335总结 A.202<s>3</s> 翻译 给你一个由小写英文字母和数字组成的字符串 \(S\). \(S\) 保证以 2023 结尾. 将 \(S\) 的最后一个字符 ...

  4. Codeforce 1335C - Two Teams Composing 统计技能种类数量+统计同一技能最大数量

    7 4 2 4 1 4 3 4 统计技能种类数量 4种不同技能 统计同一技能最大数量 技能1(数量1) 技能2(数量1) 技能3(数量1) 技能4(数量4) 选出 技能4(数量4) 作为 第2组 扣除 ...

  5. AtCoder Beginner Contest 217 D~E

    比赛链接:Here ABC水题, D - Cutting Woods 题意:开始一根木棒长度为 \(n\) 并以 \(1\) 为单位在木棒上标记\((1\sim n)\) ,输出 \(q\) 次操作 ...

  6. HDU 1179:Ollivanders: Makers of Fine Wands since 382 BC.

    HDU - 1179 二分图介绍:匈牙利算法 模板二分图: #include<bits/stdc++.h> using namespace std; const int maxn = 11 ...

  7. OpenTSDB 数据存储详解

    本文首发于 vivo互联网技术 微信公众号链接: https://mp.weixin.qq.com/s/qayKiwk5QAIWI7-nyD3FVA作者:DuZhimin 随着互联网.尤其是物联网的发 ...

  8. 【调试】netconsole的使用

    开发环境 客户端 开发板:FireFly-RK3399 Linux 4.4 IP:192.168.137.110 服务端 VMware Workstation Pro16,ubuntu 18.04 I ...

  9. cookie和token验证区别

  10. new关键字执行过程

    在javascript中,现阶段我们可以采用三种方式创建对象(object) 利用字面量创建对象 利用new Object创建对象 利用构造函数创建对象 new关键字执行过程 // new关键字执行过 ...