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

一文详解QT环境搭建:Windows平台Qt安装配置指南

随着软件开发技术的不断进步,跨平台应用程序的需求日益增长,开发者们面临着如何在不同操作系统之间保持代码的一致性和效率的问题。Qt作为一个成熟的跨平台C++框架,在这方面提供了卓越的支持,不仅简化了GUI应用程序的创建过程,而且通过其丰富的库工具集,极大地提高了开发效率。
本文专为那些希望在Windows平台上开始使用Qt进行应用开发的新手而设计。这里我将详细介绍Qt的基本概念、安装步骤、环境配置以及如何创建一个简单的Qt项目。

一、Qt简介:

Qt 是一个跨平台的应用程序框架,主要用于开发图形用户界面(GUI)软件。它使用C++语言编写,并且提供了一套丰富的类库和工具来简化GUI应用程序的开发。除了GUI编程之外,Qt还支持网络通信数据库访问XML处理等多种功能,使得开发者能够创建复杂的企业级应用。

  • 跨平台:Qt允许一次编写代码,在多个操作系统上运行,包括Windows、macOS、Linux、Android、iOS以及嵌入式系统如QNX、VxWorks等。
  • 强大的GUI库:提供了大量的控件用于构建现代、响应式的用户界面,例如按钮、菜单、对话框、表格视图等。同时,也支持自定义控件以满足特定需求。
  • 信号与槽机制:这是Qt特有的面向对象通信机制,极大地简化了组件之间的交互逻辑。
  • 国际化支持:内置对多国语言的支持,方便制作多语言版本的应用程序。
  • 集成开发环境(IDE):Qt Creator是一个专门为Qt设计的IDE,它集成了编辑器、调试器、项目管理等功能,提高了开发效率。
  • 文档与社区资源丰富:官方文档详尽,社区活跃,遇到问题时容易找到解决方案。

二、Qt安装

  1. 首先,访问Qt官方网站https://www.qt.io/zh-cn/,并点击右上角的Download.Try.进入下载页面。

Qt官方地址

  1. 点击选择开源版,以获取免费版本的Qt

选择开源版本

  1. 下拉,点击Download the Qt Online Installer

Download the Qt Online Installer

  1. 从列出的选项中选择适合您系统的最新版本进行下载。

选择适合您系统的最新版本进行下载

  1. 下载完成后,找到下载器所在的文件夹。然后在文件夹下,通过如下命令行运行如下命令以唤起安装程序。为了加速下载过程,建议使用国内镜像源。
// 使用 中国科学技术大学镜像
.\qt-online-installer-windows-x64-4.8.1.exe --mirror https://mirrors.ustc.edu.cn/qtproject/
// 使用 清华大学镜像
.\qt-online-installer-windows-x64-4.8.1.exe --mirror https://mirrors.tuna.tsinghua.edu.cn/qt/

使用国内镜像进行安装

  1. 如果您还没有Qt账号,请先注册一个。登录后,按照维护工具提供的界面指引完成安装过程。

登录Qt账号

根据自身情况,选择我是个人账户,不为任何公司使用。

根据自身情况,选择我是个人账户,不为任何公司使用

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

Qt组件安装确认01

Qt组件安装确认02

Qt组件安装确认03

  1. 完成安装后,可以通过Windows的搜索功能启动Qt Creator集成开发环境。

启动Qt Creator集成开发环境

三、Qt环境变量

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

Qt环境变量

四、Qt Creator创建项目

打开Qt Creator后,按照步骤:选择创建项目——>Application(Qt)——>Qt Widgets Application 创建项目:

Qt Creator创建项目

填写要创建的项目名称,创建项目文件路径:

填写项目名称

接下来,选择CMake作为构建系统。CMake是一种跨平台的编译系统生成器,能够简化多平台项目的构建过程。

CMake编译

选择构建套件

接下来,编译运行创建的项目,如果顺利弹出UI页面,则表明项目构建成功。

运行项目

五、CMakeLists.txt 注释

CMakeLists.txt是CMake使用的配置文件,用于定义如何构建项目。以下是一些关键指令及其作用:

  • cmake_minimum_required(VERSION 3.16):指定所需的最低CMake版本。
  • project(QtCreatorDemo VERSION 0.1 LANGUAGES CXX):定义项目名称、版本号以及使用的编程语言。
  • set(CMAKE_AUTOUIC ON)set(CMAKE_AUTOMOC ON)set(CMAKE_AUTORCC ON):启用自动处理UI文件、MOC代码生成和资源编译的功能。
  • find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets):查找Qt库,并确保包含Widgets模块。
  • add_executable():定义可执行文件的构建规则。
  • target_link_libraries():链接目标需要的库。
  • install():定义安装规则,包括安装目录等信息。

为QtCreator创建的项目中CMakeList添加了几行注释,这里也做一下记录。

# 设置CMake的最低版本要求为3.16
cmake_minimum_required(VERSION 3.16)
# 定义项目名称为QtCreatorDemo,版本号为0.1,使用的编程语言为C++
project(QtCreatorDemo VERSION 0.1 LANGUAGES CXX)

# 开启自动处理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库,优先查找Qt6,若未找到则查找Qt5,且必须找到包含Widgets模块的Qtfind_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
# 根据找到的Qt版本的主版本号,再次查找对应的Qt库,确保找到包含Widgets模块的库
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)

# 定义项目源文件列表,包含主函数源文件、主窗口源文件、主窗口头文件和主窗口UI文件
set(PROJECT_SOURCES
        main.cpp
        mainwindow.cpp
        mainwindow.h
        mainwindow.ui
)

# 判断找到的Qt版本的主版本号是否大于等于6
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    # 使用Qt 6的函数创建可执行文件,MANUAL_FINALIZATION表示手动调用qt_finalize_executable函数来完成一些最终的设置
    qt_add_executable(QtCreatorDemo
        MANUAL_FINALIZATION
        ${PROJECT_SOURCES}
    )
# Define target properties for Android with Qt 6 as:
#    set_property(TARGET QtCreatorDemo APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
#                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
else()
    if(ANDROID)
        add_library(QtCreatorDemo SHARED
            ${PROJECT_SOURCES}
        )
# Define properties for Android with Qt 5 after find_package() calls as:
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
# 在非Android平台且使用Qt 5时,创建一个可执行文件
    else()
        add_executable(QtCreatorDemo
            ${PROJECT_SOURCES}
        )
    endif()
endif()

# 将QtWidgets模块链接到目标可执行文件或库上,PRIVATE表示链接信息仅对当前目标可见
target_link_libraries(QtCreatorDemo PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)

# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
# If you are developing for iOS or macOS you should consider setting an
# explicit, fixed bundle identifier manually though.
if(${QT_VERSION} VERSION_LESS 6.1.0)
  set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.QtCreatorDemo)
endif()
set_target_properties(QtCreatorDemo PROPERTIES
    ${BUNDLE_ID_OPTION}
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)

# 包含GNUInstallDirs模块,用于设置标准的安装目录
include(GNUInstallDirs)
install(TARGETS QtCreatorDemo
    BUNDLE DESTINATION .
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

# 定义安装规则,将目标可执行文件、库等安装到指定目录
if(QT_VERSION_MAJOR EQUAL 6)
    qt_finalize_executable(QtCreatorDemo)
endif()

http://www.dtcms.com/a/108646.html

相关文章:

  • react 15-16-17-18各版本的核心区别、底层原理及演进逻辑的深度解析--react18
  • 电脑异常关机导致oracle监听器启动后自动停止
  • 蓝桥杯 web 请到下一步
  • Spread使用 配合report使用前篇
  • python爬虫基础讲解
  • 【调用通义千问实现手写文字识别】
  • 04-08手写持久层框架——核心配置和映射配置文件解析
  • 从零构建大语言模型全栈开发指南:第四部分:工程实践与部署-4.2.1视觉-语言模型(VLM)架构设计(CLIP与Flamingo模式)
  • HarmonyOS 基础组件和基础布局的介绍
  • Nyquist插件基础:LISP语法-条件语句
  • 数据量管理系统
  • 光学关键尺寸量测设备市场报告:2024年全球市场销售额达到了14.75亿美元
  • 鸿蒙NEXT开发土司工具类(ArkTs)
  • 前端中rem,vh,vw
  • 网约车APP评价系统从0到1
  • 红宝书第二十六讲:详解Web Workers:专用、共享、Service Worker
  • PyTorch中Linear全连接层
  • 视频设备轨迹回放平台EasyCVR如何搭建公共娱乐场所远程视频监控系统
  • 铁路语义分割数据下载RailSem19: A Dataset for Semantic Rail Scene Understanding
  • 使用Android 原生LocationManager获取经纬度
  • 教育软件 UI 设计:打造吸睛又实用的学习入口
  • SELinux
  • Leetcode-100 二分查找常见操作总结
  • 数据点燃创新引擎:数据驱动的产品开发如何重塑未来?
  • Airflow量化入门系列:第一章 Apache Airflow 基础
  • 红宝书第二十五讲:客户端存储(Cookie、localStorage、IndexedDB):浏览器里的“记忆盒子”
  • Leetcode 6233 -- DFS序列 | 两遍DFS
  • Vue中JSEncrypt 数据加密和解密处理
  • Firefox账号同步书签不一致(火狐浏览器书签同步不一致)
  • wireshak抓手机包 wifi手机抓包工具