一文详解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程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/74157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【区块链安全 | 第二十四篇】单位和全局可用变量(二)

文章目录 单位和全局可用变量&#xff08;Units and Globally Available Variables&#xff09;特殊变量和函数1. 区块和交易属性2. ABI 编码和解码函数3. bytes 成员函数4. string 成员函数5. 错误处理6. 数学和加密函数7. 地址类型成员函数8. 与合约相关9. 类型信息 单位和全…

一种监控录像视频恢复的高效解决方案,从每一帧中寻找可能性

该软件旨在恢复从监控设备中删除或丢失的视频。该程序经过调整以处理大多数流行供应商的闭路电视系统中使用的专有格式&#xff0c;并通过智能重建引擎进行了增强&#xff0c;能够为监控记录提供任何通用解决方案都无法实现的恢复结果。如果不需要持续使用该软件&#xff0c;则…

网红指路机器人是否支持环境监测功能?

嘿呀&#xff0c;你可知道&#xff1f;如今的叁仟网红指路机器人那可太牛啦&#xff01;它们可不单单局限于为行人指明方向&#xff0c;还纷纷兼职当起了 “环境小卫士”&#xff0c;为咱们的城市生活注入了前所未有的超智能便利。就拿那个依托叁仟智慧杆打造的数智指路机器人来…

Navicat导出mysql数据库表结构说明到excel、word,单表导出方式记录

目前只找到一张一张表导出的方式 使用information_schema传入表名查询 字段名根据需要自行删减&#xff0c;一般保留序号、字段名、类型、说明就行 SELECT COLUMNS.ORDINAL_POSITION AS 序号, COLUMNS.COLUMN_NAME AS 字段名, COLUMNS.COLUMN_TYPE AS 类型(长度), COLUMNS.N…

MySQL主从数据库搭建

此方案可适用于Centos 7、OpenEuler、Ubuntu操作系统。 在国产银河麒麟V10中,虚拟机中启动的麒麟系统使用当前方案并未遇到问题,但是在服务器上安装时,执行到初始化时出现了找不到依赖问题(目前已解决安装问题),后续我会继续更新该问题解决方案。 1. 创建主、从安装目录…

`git commit --amend` 详解:修改提交记录的正确方式

文章目录 git commit --amend 详解&#xff1a;修改提交记录的正确方式1. 修改提交信息2. 补充遗漏的文件3. 结合 --amend 进行交互式修改4. 已推送提交的修改总结 git commit --amend 详解&#xff1a;修改提交记录的正确方式 git commit --amend 用于修改最近一次的提交&…

为什么package.json里的npm和npm -v版本不一致?

这个情况出现是因为package.json里的 npm 版本和系统实际使用的 npm 版本是两个不同的概念。让我来解释一下&#xff1a; 原因解释 全局 npm vs 项目依赖&#xff1a; npm -v显示的是系统全局安装的 npm 版本&#xff08;位于/usr/bin/npm或类似路径&#xff09;package.jso…

python系统之综合案例:用python打造智能诗词生成助手

不为失败找理由&#xff0c;只为成功找方法。所有的不甘&#xff0c;因为还心存梦想&#xff0c;所以在你放弃之前&#xff0c;好好拼一把&#xff0c;只怕心老&#xff0c;不怕路长。 python系列之综合案例 前言一、项目描述二、项目需求三、 项目实现1、开发准备2、代码实现 …

Java常用工具算法-1--哈希算法(MD5,SHA家族,SHA-256,BLAKE2)

1、概述 哈希算法&#xff08;Hash Algorithm&#xff09;&#xff0c;又称散列算法&#xff0c;是一种将任意长度的输入数据&#xff08;明文&#xff09;转换为固定长度的输出&#xff08;哈希值/摘要&#xff09;的数学算法。 哈希值通常被称为摘要&#xff08;Digest&…

OpenMCU(五):STM32F103时钟树初始化分析

概述 本文主要描述了STM32F103初始化过程系统时钟的初始化,主要描述了系统时钟的初始化&#xff0c;AHB总线时钟&#xff0c;APB总线时钟等的初始化。 硬件板卡3d图 时钟树 STM32F103的时钟树&#xff0c;如下所示: 时钟源选择 从STM32F103的时钟树框图&#xff0c;我们可以…

【qt】文件类(QFile)

很高兴你能看到这篇文章&#xff0c;同时我的语雀文档也更新了许多嵌入式系列的学习笔记希望能帮到你 &#xff1a; https://www.yuque.com/alive-m4b9n 目录 QFile 主要功能QFile 操作步骤QFile 其他常用函数案例分析及实现功能一实现&#xff1a;打开文件并显示功能二实现:另…

基于AT89C52单片机的轮胎压力监测系统

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/90545655?spm1001.2014.3001.5503 功能介绍&#xff1a; 采用MPX4115压力传感器进行轮胎压力检测&#xff1b;使用LCD液晶显示器显示轮胎压力&#xff1b;若压力过…

shell脚本--MySQL简单调用

实现功能 增 数据库的创建&#xff0c;数据表的创建已经实现 创建用户 删 删除数据库&#xff0c; 删除库下的某个表&#xff0c; 删除某个用户 改 暂无 查 查看所有的数据库&#xff0c; 查看某个库下的所有数据表&#xff0c; 查看某个表的结构&#xff0c; 查…

计算机网络 OSI参考模型

目录 OSS七层 OSI通信过程1 OSI通信过程2 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 OSS七层 OSI通信过程1 OSI通信过程2 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层

2025年华为HCIP题库分享

1101、 【拖拽题】OPSF邻接关系建立的过程中需要使用不同的报文&#xff0c;那么请分别将以下各个状态和该状态使用的报文联系起来。 答题格式为&#xff1a;11 22 33 43 正确答案&#xff1a;【12】【21】【24】【33】 解析&#xff1a; 建立邻居关系 RouterA的一个连接到广…

DIskgenius使用说明

文章目录 一、概述1. 软件简介2. 系统要求 二、核心功能1. 分区管理(1) 查看磁盘分区(2) 创建与删除分区(3) 调整分区大小(4) 格式化分区 2. 数据恢复(1) 恢复已删除文件(2) 恢复丢失分区(3) 恢复误格式化分区 3. 磁盘复制(1) 克隆磁盘(2) 磁盘镜像 4. 文件操作(1) 文件复制与移…

linux--------------进程控制(上)

1.进程创建 1.1fork函数初识 在linux中fork函数是⾮常重要的函数&#xff0c;它从已存在进程中创建⼀个新进程。新进程为⼦进程&#xff0c;⽽原进 程为⽗进程。 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;⾃进程中返回0&#xff0c;⽗进程返回⼦进程id…

windows免密SSH连接 ubuntu教程

文章目录 前情提要step1. 在windows下生成SSH密钥step2. SSH公钥copy到ubuntu的~/.ssh/authorized_keys内step3. 修改文件权限&#xff08;这一步完成后就可以实现免密SSH连接了&#xff09; 前情提要 ubuntu下安装SSH服务 sudo apt-get install openssh-serverwindows下安装…

中级:数组算法面试题全解析

一、引言 在Java面试中&#xff0c;数组相关的算法题是考察候选人基础算法能力的常见类型。面试官通过这些问题了解候选人在面对具体问题时的逻辑思维和代码实现能力。本文将深入剖析常见的数组算法面试题&#xff0c;结合实际开发场景&#xff0c;帮助读者全面掌握这些知识点…

《Linux运维实战:Ubuntu 22.04配置pam实现密码复杂度策略》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;Linux运维实战总结 一、背景信息 由于安全方面的考虑&#xff0c;先要求Ubuntu 22.04系统需配置密码复杂度策略&#xff0c;先要求如下&#xff1…