当前位置: 首页 > article >正文

一文详解QT环境搭建:Windows使用CLion配置QT开发环境

在当今的软件开发领域,跨平台应用的需求日益增长,Qt作为一款流行的C++图形用户界面库,因其强大的功能和易用性而备受开发者青睐。与此同时,CLion作为一款专为C/C++打造的强大IDE,提供了丰富的特性和高效的编码体验。本文将指导您如何在Windows环境配置CLionQt的集成环境,使您能够快速开始Qt应用程序的开发。

一、Qt MinGW组件

首先,需要确认您的本地Windows电脑上是否已经安装了Qt MinGW相关组件。若尚未安装,请按照以下步骤操作:

1.在您的本地电脑Qt的安装目录下,通过如下命令行运行如下命令以唤起Qt维护工具。为了加速下载过程,建议使用国内镜像源。

// 使用 中国科学技术大学 镜像唤起 Qt维护工具
.\MaintenanceTool.exe --mirror https://mirrors.ustc.edu.cn/qtproject/
// 使用 清华大学 镜像唤起 Qt维护工具
.\MaintenanceTool.exe --mirror https://mirrors.tuna.tsinghua.edu.cn/qt/

国内镜像唤起 Qt维护工具

  1. 按照维护工具提供的界面指引,确保已安装所有必需的Qt版本及组件。请参照以下三张图核对组件安装情况

Qt组件安装确认01

Qt组件安装确认02

Qt组件安装确认03

二、Qt环境变量

为了保证Qt工具链能够在命令行中被正确识别,请确保您的系统环境变量中包含了Qt的安装路径。这一步骤对于后续的项目创建至关重要。

Qt环境变量

三、Clion新建Qt项目

当一切准备就绪后,打开CLion,并根据提示新建一个Qt Widgets Executable项目。

3.1 新建Qt项目

打开CLion,新建Qt Widgets Executable项目:

新建Qt Widgets Executable项目

3.2 配置mingw工具

完成相关创建后,需完成Clion工具链环境配置后,才能完成程序的编译运行。

配置工具链:操作步骤File——>Setting——>Toolchains,配置Toolset项为Qt路径下mingw工具。
配置工具链

3.3 修改main.cpp

  1. 修改main.cpp
#include "mainwindow.h"  #include <QApplication>  int main(int argc, char *argv[])  
{  QApplication a(argc, argv);  MainWindow w;  w.show();  return a.exec();  
}
  1. 添加mainwindow.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>MainWindow</class><widget class="QMainWindow" name="MainWindow"><property name="geometry"><rect><x>0</x><y>0</y><width>800</width><height>600</height></rect></property><property name="windowTitle"><string>MainWindow</string></property><widget class="QWidget" name="centralwidget"><widget class="QWidget" name="gridLayoutWidget"><property name="geometry"><rect><x>190</x><y>80</y><width>160</width><height>80</height></rect></property><layout class="QGridLayout" name="gridLayout"/></widget></widget><widget class="QMenuBar" name="menubar"><property name="geometry"><rect><x>0</x><y>0</y><width>800</width><height>18</height></rect></property></widget><widget class="QStatusBar" name="statusbar"/></widget><resources/><connections/>
</ui>
  1. 添加mainwindow.h
#ifndef MAINWINDOW_H  
#define MAINWINDOW_H  #include <QMainWindow>  QT_BEGIN_NAMESPACE  
namespace Ui {  
class MainWindow;  
}  
QT_END_NAMESPACE  class MainWindow : public QMainWindow  
{  Q_OBJECT  public:  MainWindow(QWidget *parent = nullptr);  ~MainWindow();  private:  Ui::MainWindow *ui;  
};  
#endif // MAINWINDOW_H
  1. 添加mainwindow.cpp
#include "mainwindow.h"  
#include "./ui_mainwindow.h"  MainWindow::MainWindow(QWidget *parent)  : QMainWindow(parent)  , ui(new Ui::MainWindow)  
{  ui->setupUi(this);  
}  MainWindow::~MainWindow()  
{  delete ui;  
}

3.4 修改CMakeLists.txt

参照下方代码,修改现有的CMakeLists.txt文件代码:

# 指定 CMake 的最低版本要求为 3.23
cmake_minimum_required(VERSION 3.23.2)
# 定义项目的名称为 "CLion_Qt_Demo"
project(CLion_Qt_Demo)# 开启自动处理UI文件的功能,让CMake自动将.ui文件转换为对应的C++代码
set(CMAKE_AUTOUIC ON)
# 开启自动处理MOC(Meta-Object Compiler)的功能,用于处理Qt的信号槽机制相关代码生成
set(CMAKE_AUTOMOC ON)
# 开启自动处理RCC(Resource Compiler)的功能,用于处理资源文件(如图片、样式表等)
set(CMAKE_AUTORCC ON)# 设置 C++ 编译标准为 C++17
set(CMAKE_CXX_STANDARD 17)
# 要求必须使用指定的C++标准,若不满足则构建失败
set(CMAKE_CXX_STANDARD_REQUIRED ON)# Qt
# 设置CMAKE_PREFIX_PATH环境变量:指向了Qt安装目录,用于帮助CMake找到Qt库。
set(CMAKE_PREFIX_PATH D:/Program/Qt/6.8.1/mingw_64)
# 查找 Qt6 库并配置其组件。这里指定了需要 Core、Gui 和 Widgets 组件,并且是必须的 (REQUIRED)。
# 如果找不到指定的组件,CMake 配置过程将会失败。
find_package(Qt6 COMPONENTSCoreGuiWidgetsREQUIRED)# 定义项目源文件列表,包含主函数源文件、主窗口源文件、主窗口头文件和主窗口UI文件
set(PROJECT_SOURCESmain.cppmainwindow.cppmainwindow.hmainwindow.ui)
add_executable(CLion_Qt_Demo${PROJECT_SOURCES})# 将 Qt6 的 Core、Gui 和 Widgets 库链接到名为 "CLion_Qt_Demo" 的可执行文件上。
# 这使得在编译时可以访问 Qt 提供的功能,并且在运行时与这些库链接。
target_link_libraries(CLion_Qt_DemoQt6::CoreQt6::GuiQt6::Widgets
)

3.5 运行Qt程序:

经过上述步骤,已成功的在Windows环境中配置好了CLion与Qt的开发环境。现在,可以尝试运行一下的Qt程序,看看是否能够正常显示UI界面,以此验证配置是否正确。

运行Qt程序

相关文章:

一文详解QT环境搭建:Windows使用CLion配置QT开发环境

在当今的软件开发领域&#xff0c;跨平台应用的需求日益增长&#xff0c;Qt作为一款流行的C图形用户界面库&#xff0c;因其强大的功能和易用性而备受开发者青睐。与此同时&#xff0c;CLion作为一款专为C/C打造的强大IDE&#xff0c;提供了丰富的特性和高效的编码体验。本文将…...

NE 综合实验3:基于 IP 配置、链路聚合、VLAN 管理、路由协议及安全认证的企业网络互联与外网访问技术实现(H3C)

综合实验3 实验拓扑 设备名称接口IP地址R1Ser_1/0与Ser_2/0做捆绑MP202.100.1.1/24G0/0202.100.2.1/24R2Ser_1/0与Ser_2/0做捆绑MP202.100.1.2/24G0/0172.16.2.1/24G0/1172.16.1.1/24G0/2172.16.5.1/24R3G5/0202.100.2.2/24G0/0172.16.2.2/24G0/1172.16.3.1/24G0/2172.16.7.1/…...

Ground Truth(真实标注数据):机器学习中的“真相”基准

Ground Truth&#xff1a;机器学习中的“真相”基准 文章目录 Ground Truth&#xff1a;机器学习中的“真相”基准引言什么是Ground Truth&#xff1f;Ground Truth的重要性1. 模型训练的基础2. 模型评估的标准3. 模型改进的指导 获取Ground Truth的方法1. 人工标注2. 众包标注…...

双重token自动续期解决方案

Token自动续期实现方案详解 Token自动续期是提升用户体验和保障系统安全的关键机制&#xff0c;其核心在于无感刷新和安全可控。以下从原理、实现方案、安全措施和最佳实践四个维度展开说明&#xff1a; 一、核心原理&#xff1a;双Token机制 Token自动续期通常采用 Access …...

我与数学建模之启程

下面的时间线就是从我的大二上开始 9月开学就迎来了本科阶段最重要的数学建模竞赛——国赛&#xff0c;这个比赛一般是在9月的第二周开始。 2021年国赛是我第一次参加国赛&#xff0c;在报名前我还在纠结队友&#xff0c;后来经学长推荐找了另外两个学长。其实第一次国赛没啥…...

多段圆弧拟合离散点实现切线连续

使用多段圆弧来拟合一个由离散点组成的曲线,并且保证切线连续。也就是说&#xff0c;生成的每一段圆弧之间在连接点处必须有一阶导数连续&#xff0c;也就是切线方向相同。 点集分割 确保每个段的终点是下一段的起点&#xff0c;相邻段共享连接点&#xff0c;避免连接点位于数…...

烧结银:解锁金刚石超强散热潜力​

烧结银&#xff1a;解锁金刚石超强散热潜力​ 在材料科学与热管理领域&#xff0c;金刚石凭借超高的热导率&#xff0c;被誉为 “散热之王”&#xff0c;然而&#xff0c;受限于其特殊的性质&#xff0c;金刚石在实际应用中难以充分发挥散热优势。而烧结银AS9335的出现&#x…...

【蓝桥杯】第十四届C++B组省赛

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;蓝桥杯 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 试题A&#xff1a;日期统计试题B&#xff1a;01串的熵试题C&#xff1a;冶炼金属试题D&#xff1a;飞机降落试题E&#xff1a;接…...

企业级海外网络专线行业应用案例及服务商推荐

在全球化业务快速发展的今天&#xff0c;传统网络技术已难以满足企业需求。越来越多企业开始选择新型海外专线解决方案&#xff0c;其中基于SD-WAN技术的企业级海外网络专线备受关注。这类服务不仅能保障跨国数据传输&#xff0c;还能根据业务需求灵活调整网络配置。接下来我们…...

阿里云服务器安装docker以及mysql数据库

(1) 官方下载路径 官方下载地址: Index of linux/static/stable/x86_64/阿里云镜像地址: https://mirrors.aliyun.com/docker-ce/下载最新的 Docker 二进制文件&#xff1a;wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.23.tgz登录到阿里云服务…...

力扣经典算法篇-5-多数元素(哈希统计,排序,摩尔投票法)

题干&#xff1a; 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1&#xff1a; 输入&#xff1a;nums [3,2,3] 输出&…...

axios介绍以及配置

Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;用于浏览器和 Node.js 环境中进行 HTTP 请求。 一、特点与基本用法 1.特点 浏览器兼容性好&#xff1a;能在多种现代浏览器中使用&#xff0c;包括 Chrome、Firefox、Safari 等。支持 Promise API&#xff1a;基于 Prom…...

深入解析:HarmonyOS Design设计语言的核心理念

深入解析&#xff1a;HarmonyOS Design设计语言的核心理念 在当今数字化迅速发展的时代&#xff0c;用户对操作系统的体验要求越来越高。华为的HarmonyOS&#xff08;鸿蒙操作系统&#xff09;应运而生&#xff0c;旨在为用户提供全场景、全设备的智慧体验。其背后的设计语言—…...

大数据技术之Scala:特性、应用与生态系统

摘要 Scala 作为一门融合面向对象编程与函数式编程范式的编程语言&#xff0c;在大数据领域展现出独特优势。本文深入探讨 Scala 的核心特性&#xff0c;如函数式编程特性、类型系统以及与 Java 的兼容性等。同时&#xff0c;阐述其在大数据处理框架&#xff08;如 Apache Spa…...

程序化广告行业(47/89):竞价指标剖析与流量对接要点

程序化广告行业&#xff08;47/89&#xff09;&#xff1a;竞价指标剖析与流量对接要点 大家好&#xff01;一直以来&#xff0c;我都希望能和大家一同深入探索程序化广告行业的奥秘&#xff0c;这也是我持续撰写这一系列博客的动力。今天&#xff0c;咱们接着来剖析程序化广告…...

dfs记忆化搜索刷题 + 总结

文章目录 记忆化搜索 vs 动态规划斐波那契数题解代码 不同路径题解代码 最长递增子序列题解代码 猜数字大小II题解代码 矩阵中的最长递增路径题解代码 总结 记忆化搜索 vs 动态规划 1. 记忆化搜索&#xff1a;有完全相同的问题/数据保存起来&#xff0c;带有备忘录的递归 2.记忆…...

vue2 全局封装axios统一管理api

在vue项目中&#xff0c;经常会使用到axios来与后台进行数据交互&#xff0c;axios丰富的api满足我们基本的需求。但是对于项目而言&#xff0c;每次都需要对异常进行捕获或者处理的话&#xff0c;代码会很繁重冗余。我们需要将其公共部分封装起来&#xff0c;比如异常处理&…...

大模型有哪些算法

大模型&#xff08;Large-scale Models&#xff09;通常指参数量大、架构复杂、在特定任务或领域表现出色的深度学习模型。这些模型的算法核心往往基于Transformer 架构及其变体&#xff0c;同时结合了大规模数据、硬件加速和优化技巧。以下是当前主流大模型及其核心算法的分类…...

【Linux】进程的详讲(中上)

目录 &#x1f4d6;1.什么是进程? &#x1f4d6;2.自己写一个进程 &#x1f4d6;3.操作系统与内存的关系 &#x1f4d6;4.PCB(操作系统对进程的管理) &#x1f4d6;5.真正进程的组成 &#x1f4d6;6.形成进程的过程 &#x1f4d6;7、Linux环境下的进程知识 7.1 task_s…...

Python Cookbook-4.17 字典的并集与交集

任务 给定两个字典&#xff0c;需要找到两个字典都包含的键(交集)&#xff0c;或者同时属于两个字典的键(并集)。 解决方案 有时&#xff0c;尤其是在Python2.3中&#xff0c;你会发现对字典的使用完全是对集合的一种具体化的体现。在这个要求中&#xff0c;只需要考虑键&am…...

优选算法的巧思之径:模拟专题

专栏&#xff1a;算法的魔法世界 个人主页&#xff1a;手握风云 目录 一、模拟 二、例题讲解 2.1. 替换所有的问号 2.2. 提莫攻击 2.3. Z字形变换 2.4. 外观数列 2.5. 数青蛙 一、模拟 模拟算法说简单点就是照葫芦画瓢&#xff0c;现在草稿纸上模拟一遍算法过程&#xf…...

【云服务器】在Linux CentOS 7上快速搭建我的世界 Minecraft 服务器搭建,并实现远程联机,详细教程

【云服务器】在Linux CentOS 7上快速搭建我的世界 Minecraft 服务器搭建&#xff0c;详细详细教程 一、 服务器介绍二、下载 Minecraft 服务端三、安装 JDK 21四、搭建服务器五、本地测试连接六、添加服务&#xff0c;并设置开机自启动 前言&#xff1a; 推荐使用云服务器部署&…...

文本分析(非结构化数据挖掘)——特征词选择(基于TF-IDF权值)

TF-IDF是一种用于信息检索和文本挖掘的常用加权算法&#xff0c;用于评估一个词在文档或语料库中的重要程度。它结合了词频&#xff08;TF&#xff09;和逆文档频率&#xff08;IDF&#xff09;两个指标&#xff0c;能够有效过滤掉常见词&#xff08;如“的”、“是”等&#x…...

【JavaSE】小练习 —— 图书管理系统

【JavaSE】JavaSE小练习 —— 图书管理系统 一、系统功能二、涉及的知识点三、业务逻辑四、代码实现4.1 book 包4.2 user 包4.3 Main 类4.4 完善管理员菜单和普通用户菜单4.5 接着4.4的管理员菜单和普通用户菜单&#xff0c;进行操作选择&#xff08;1查找图书、2借阅图书.....…...

命令模式介绍及应用案例

命令模式介绍 命令模式&#xff08;Command Pattern&#xff09; 是一种行为设计模式&#xff0c;它将请求封装为一个对象&#xff0c;从而使你可以用不同的请求对客户进行参数化&#xff0c;并且支持请求的排队、记录日志、撤销操作等功能。命令模式的核心思想是将“请求”封…...

多线程(多线程案例)(续~)

目录 一、单例模式 1. 饿汉模式 2. 懒汉模式 二、阻塞队列 1. 阻塞队列是什么 2. 生产者消费者模型 3. 标准库中的阻塞队列 4. 自实现阻塞队列 三、定时器 1. 定时器是什么 2. 标准库中的定时器 欢迎观看我滴上一篇关于 多线程的博客呀&#xff0c;直达地址&#xf…...

python笔记之函数

函数初探 python在要写出函数很简单&#xff0c;通过关键字def即可写出&#xff0c;简单示例如下 def add(a, b):return ab 以上即可以定义出一个简单的函数&#xff1a;接收两个变量a和b&#xff0c;返回a和b相加的结果&#xff0c;当然这么说也不全对&#xff0c;原因就是…...

合合信息大模型加速器2.0实测:当AI开始“读心术“与“考古“

凌晨三点的编辑部&#xff0c;我盯着屏幕上密密麻麻的财务报表和如天书般的专利图纸&#xff0c;感觉咖啡因正在大脑中上演"黑凤凰"式崩溃。这时&#xff0c;合合信息的AI助手突然开口&#xff1a;"您需要的是自动关联32个数据表&#xff0c;还是让模型直接生成…...

一个判断A股交易状态的python脚本

最近在做股票数据相关的项目&#xff0c;需要用到判断某一天某个时刻A股的状态&#xff0c;比如休市&#xff0c;收盘&#xff0c;交易中等&#xff0c;发动脑筋想了一下&#xff0c;这个其实还是比较简单的&#xff0c;这里我把实现方法分享给大家。 思路 当天是否休市 对于某…...

【go】数组与切片

数组Array 重点&#xff1a; 数组是值类型 数组的定义 var 数组名 [数组大小] 数据类型,例如var intArr [5] int&#xff0c;定义完数组后数组里的元素有默认值。、 数组的地址&intArr、&intArr[0]。 数组占据连续的内存。 int通常是4字节&#xff08;32位&…...