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

QT创建项目(项目模板、构建系统、选择类、构建套件)

1. 项目模版

项目类型界面技术适用场景核心依赖模块开发语言
Qt Widget ApplicationC++ Widgets传统桌面应用(复杂控件)Qt WidgetsC++
Qt Console Application无 GUI命令行工具、服务Qt CoreC++
Qt Quick ApplicationQML/Quick现代跨平台应用(动画/触摸)Qt QuickQML + C++
Qt Quick (compat)QML(旧版兼容)迁移旧版 Qt Quick 项目到 Qt 6Qt Quick + QtQuick.CompatQML + C++

2. 构建系统 

qmake是Qt自带的构建工具,专门为Qt项目设计,简化了项目的配置过程。而CMake是一个跨平台的构建系统生成器,支持更广泛的项目类型,不仅仅是Qt。

工具定位开发者主要用途
qmakeQt 官方早期构建工具,专为 Qt 项目优化Qt 团队生成平台相关的 Makefile 或项目文件
CMake跨平台构建系统生成器,支持多种编译器和项目类型(不限于 Qt)Kitware生成平台无关的构建文件(如 Makefile、Visual Studio 项目)
工具优点缺点
qmake- 简单易学
- 与 Qt 深度集成
- 快速配置小型项目
- 功能有限
- 跨平台支持较弱
- 已过时
CMake- 跨平台工业标准
- 强大的扩展性
- 活跃的社区支持
- 学习曲线陡峭
- 配置复杂度较高

项目从 qmake 迁移到 CMake 时,除了 .pro 和 CMakeLists.txt 文件的差异,项目中的 代码本身通常不需要修改,但某些与构建系统相关的代码或配置可能需要调整 。

qmake 项目文件(.pro): 

# 指定 Qt 模块
QT += core gui widgets

# 项目名称
TARGET = MyApp

# 源文件
SOURCES += main.cpp \
           mainwindow.cpp

# 头文件
HEADERS += mainwindow.h

# 资源文件
RESOURCES += icons.qrc

# 条件编译(平台相关)
win32 {
    LIBS += -luser32
} else {
    LIBS += -lpthread
}

等效的 CMakeLists.txt

# 指定 CMake 最低版本
cmake_minimum_required(VERSION 3.16)

# 定义项目名称和语言
project(MyApp LANGUAGES CXX)

# 查找 Qt 模块
find_package(Qt6 COMPONENTS Core Gui Widgets REQUIRED)

# 添加可执行文件
add_executable(MyApp
    main.cpp
    mainwindow.cpp
    mainwindow.h
)

# 处理 Qt 资源文件
qt_add_resources(MyApp "resources"
    PREFIX "/"
    FILES icons.qrc
)

# 链接 Qt 库
target_link_libraries(MyApp PRIVATE
    Qt6::Core
    Qt6::Gui
    Qt6::Widgets
)

# 平台特定配置
if(WIN32)
    target_compile_definitions(MyApp PRIVATE WINDOWS)
elseif(UNIX)
    target_compile_definitions(MyApp PRIVATE LINUX)
endif()

3. 选择类

QMainWindow是主窗口类,通常用于应用程序的主界面,包含菜单栏、工具栏、状态栏等。QWidget是所有用户界面对象的基类,可以作为其他窗口或控件的容器。

QDialog是对话框类,用于短期交互,比如打开文件或设置选项。

三个类的继承关系。

QMainWindow和QDialog都是QWidget的子类,但各自有不同的扩展功能。

QMainWindow提供了标准的应用程序框架,

而QDialog则专注于对话框的特定行为,比如模态和非模态。

QWidget适合作为自定义控件或简单窗口,而QMainWindow适合复杂的主界面。

特性QWidgetQMainWindowQDialog
继承关系所有控件的基类继承自 QWidget继承自 QWidget
预设组件菜单栏、工具栏、状态栏对话框按钮布局
窗口修饰可选标题栏完整标题栏(最大化/最小化)简化标题栏(无最大化)
典型用途简单窗口或子控件应用程序主界面弹窗、配置窗口
模态支持需手动实现无内置支持支持模态(exec()
返回值机制可返回 Accepted/Rejected

1. 主界面开发 → QMainWindow

  • 需要菜单栏、工具栏或停靠窗口的复杂应用。

2. 短期交互弹窗 → QDialog

  • 如文件选择、设置选项、消息提示。

3. 自定义控件或简单窗口 → QWidget

  • 作为子控件容器,或不需要复杂框架的独立窗口。

 4. 构建套件

MSVC是微软的Visual C++编译器,主要用于Windows平台,和Visual Studio集成。而MinGW是Minimalist GNU for Windows的缩写,提供了GNU工具链在Windows上的移植,可以生成原生Windows应用,但使用的是GNU的工具链。

MSVC通常需要安装Visual Studio,而MinGW可能更轻量。MSVC是商业使用可能需要授权,而MinGW是开源的。

特性MSVC(Microsoft Visual C++)MinGW(GNU for Windows)
开发者微软(Microsoft)GNU 社区 + MinGW 项目
编译器基础微软的闭源编译器(集成于 Visual Studio)GNU GCC 的 Windows 移植版(开源)
兼容性仅 Windows跨平台支持(通过 GCC)
运行时库依赖依赖 MSVCRT(需安装 VC++ Redistributable)依赖 MinGW 运行时库(静态或动态链接)
调试工具深度集成 Visual Studio 调试器支持 GDB(需手动配置)
C++ 标准支持紧跟最新标准(如 C++20),更新快更新较慢(依赖 GCC 版本)
性能优化针对 Windows 高度优化,生成代码效率高通用优化,可能略逊于 MSVC
授权协议闭源(需 Visual Studio 授权,社区版免费)开源(GPL/LGPL)
Qt 官方支持优先支持,预编译包完善支持,但部分模块可能需自行编译
部署便捷性需分发 VC++ 运行时库(或静态链接)可静态编译,减少依赖

1. 推荐使用 MSVC 的情况

  • 开发 Windows 专用应用:需要深度集成 Windows API(如 DirectX、COM 组件)。

  • 依赖 Visual Studio 生态:使用 Visual Studio 的调试器、性能分析工具。

  • 企业级开发:需要官方支持、长期维护的编译器。

  • 追求性能:MSVC 生成的代码在 Windows 上通常更高效。

2. 推荐使用 MinGW 的情况

  • 跨平台开发:希望代码在 Linux/macOS 和 Windows 间无缝移植(使用同一工具链)。

  • 开源项目:需遵守 GPL 协议,避免闭源依赖。

  • 轻量化部署:通过静态链接减少运行时依赖(无需安装 VC++ Redistributable)。

  • 资源受限环境:无需安装庞大的 Visual Studio,只需 MinGW 工具链。

 


http://www.kler.cn/a/583474.html

相关文章:

  • NLP常见任务专题介绍(3)-垂直领域的聊天机器人搭建详细教程
  • Ollama+ WebUI 部署deepseek-r1
  • 第13章贪心算法
  • 【mysql】centOS7安装mysql详细操作步骤!
  • 2011-2020年 全国省市县-数字普惠金融指数数字经济指数绿色金融指数县域数字乡村指数
  • MBox20边缘计算网关:助力PLC远程调试监控
  • 14 | fastgo 三层架构设计
  • MySQL的 where 1=1会不会影响性能?
  • AI把汽车变成“移动硅基生命体“
  • 使用 pytesseract 进行 OCR 识别:以固定区域经纬度提取为例
  • ctfhub-信息泄露-phpinfo
  • 充电桩运营管理的智能化升级:物联协议转换器的力量
  • 智元GO-1大模型,开启具身智能新纪元
  • 20、组件懒加载
  • 【数据结构】List介绍
  • TDengine 使用教程:从入门到实践
  • 解决跨域问题的6种方案
  • a = b c 的含义
  • 配置安全网站
  • React学习笔记15