序言

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. 总结MySQL 的一些知识点:MySQL 连接的使用

    MySQL 连接的使用 在前几章节中,我们已经学会了如何在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据. 本章节我们将向大家介绍如何使用 MySQL 的 JOIN ...

  2. 使用 cron4j-solon-plugin 开发定时任务(新)

    (一)新建一个 maven 空项目 (二)添加 maven 引用 <dependency> <groupId>org.noear</groupId> <art ...

  3. Solon 能打出 war 包放到 tomcat 下运行吗?

    Solon 是一个强调自启动的框架,原则上是不推荐 war 容器运行的,但总会有些甲方有硬性规定,或者旧环境不能变. 1.操作指南: 在普通项目增加几项内容即可打 war 包(仍可打 jar 包): ...

  4. HTML 首页 欢迎页

    HTML 首页 欢迎页,将下面代码复制出来,贴到HTML中,直接运行 <!DOCTYPE html> <html lang="en"> <head&g ...

  5. PPT 没有电脑如何制作PPT

    没有电脑如何制作PPT

  6. pyinstaller打包多线程代码,运行死循环?

    描述现象 用pyinstaller打包了一个上传文件的脚本,里面有多个input在while循环内,然后启用了多线程上传,在编辑器中运行没问题,但是打包完后,就一直循环提示你input... 解决 在 ...

  7. Java 网络编程 —— 实现非阻塞式的客户端

    创建阻塞的 EchoClient 客户程序一般不需要同时建立与服务器的多个连接,因此用一个线程,按照阻塞模式运行就能满足需求 public class EchoClient { private Soc ...

  8. 【每日一题】6.Rinne Loves Edges (树形DP)

    题目链接:Here 树形DP 算法讲解:Here 无向联通图其实就是树的形状,其次让我们以 s 为根使得所有的叶子节点不能到达根并且让删去边权的总和最小,那么就是典型的 树形DP 了. \(dp_i\ ...

  9. linux安装pyarmor踩坑记录

    现有环境 centos 7.8 python 3.7.6 pip 20.0 找度娘学习安装pyarmor pip install pyarmor 然后查看版本 pyarmor --version 进入 ...

  10. python之pycharm常见使用技巧

    一.ctrl+d:复制