QT入门

Qt介绍

Qt概述

Qt是由挪威Troll Tech公司出品的跨平台C++图形用户界面库(交互界面设计工具),但功能远超单纯的GUI工具包——它提供了覆盖多领域的跨平台开发模块,支持网络、数据库、OpenGL、Web技术、传感器、通信协议(蓝牙、串行端口、NFC)、XML/JSON处理、打印、PDF生成等场景。

Qt自带集成开发环境(IDE)Qt Creator,可运行在Linux、OS X和Windows系统,是Qt开发的核心工具。

补充:Qt核心优势

  • 跨平台:一次编码,多平台部署(桌面、移动、嵌入式、物联网等)
  • 模块化:丰富的内置模块,降低开发复杂度
  • 易用性:支持可视化设计(Qt Designer)与代码开发结合
  • 高性能:基于C++编写,兼顾效率与灵活性
  • 生态完善:官方文档齐全,社区活跃,第三方资源丰富

Qt模块

Qt的API和库是其核心基础,分为基本模块(核心必备)和扩展模块(专业场景补充),覆盖从基础功能到高级开发的全需求。

基本模块(核心必备)

模块名称 功能描述
QtCore 供其他模块使用的非图形核心类(如信号槽、容器、线程、时间等基础功能)
QtGui 图形用户界面组件的基类,包含OpenGL相关功能
Qt Network 简化网络编程,提供跨平台的网络通信接口(TCP/UDP、HTTP等)
Qt QML 支持QML和JavaScript语言的类,以及对应的C++交互API
Qt Quick Dialogs Qt Quick应用程序的系统对话框创建与交互类
Qt Quick Layouts 用于排列Qt Quick 2基于Item的界面元素,实现自适应布局
Qt D-Bus 基于D-Bus协议的进程间通信(IPC)类
Qt Quick 声明式语言框架,用于构建高度动态、自定义的用户界面(适合移动/嵌入式)
Qt Quick Controls 为桌面/嵌入式/移动设备提供轻量级QML组件,样式架构简单,性能高效
Qt Quick Test QML应用程序的单元测试框架,测试用例以JavaScript函数编写
Qt Test 用于Qt应用程序和库的C++单元测试类
Qt Widgets 基于C++的传统Widget组件库,用于扩展Qt GUI(适合桌面应用)

扩展模块(专业场景)

模块名称 功能描述
Qt Digital Advertising 嵌入式/移动端/桌面端数字广告创收的一体化开发解决方案
Qt Multimedia 音频、视频、收音机、摄像头等多媒体功能类
Qt Multimedia Widgets 基于Widget的多媒体功能扩展模块
Qt 3D 支持2D/3D渲染的近实时仿真系统,适用于3D可视化应用
Qt Bluetooth 提供蓝牙硬件访问接口,支持蓝牙设备通信
Qt Serial Bus 工业串行总线接口访问(支持CAN总线、Modbus协议)
Qt Serial Port 硬件/虚拟串行端口访问接口
Qt SQL 数据库集成类,支持SQL语句操作各类数据库(MySQL、SQLite等)
Qt Charts 数据可视化组件,支持静态/动态数据驱动的图表展示(折线图、柱状图等)
Qt MQTT 机器对机器(M2M)通信协议,低开销数据传输(适合物联网场景)
Qt WebEngine 基于Chromium的Web浏览引擎,支持在应用中嵌入网页(补充拓展)
Qt Location 地理位置服务模块,支持地图显示、定位、路径规划(补充拓展)

Qt应用场景

Qt应用覆盖70多个行业,是数百万设备和应用的底层技术,核心应用领域及目标平台如下:

按行业划分

  • 汽车:创建统一的数字座舱用户体验
  • 自动化:变革工业自动化策略与服务
  • 消费类电子:为各类设备打造流畅的用户界面
  • 医疗设备:开发确保患者安全的合规软件
  • 补充行业:物联网、智能家居、工业控制、金融终端等(拓展)
行业应用示意图

按目标平台划分

  • 桌面应用:Windows、Linux、macOS平台的可视化应用
  • 移动设备:iOS、Android平台的随行应用与服务
  • 嵌入式设备:精简网关、专用设备的GUI开发
  • 微控制器(MCU):低性能硬件上运行高性能UI
  • 物联网(IoT):跨设备的互联互通与数据展示
  • 多屏幕/AR/VR:2D/3D、触屏交互的可扩展界面
平台覆盖示意图

补充:知名应用案例

  • 桌面端:VirtualBox(虚拟机软件)、VLC播放器(部分功能)、WPS Office(Linux版本)
  • 移动端:部分车载导航系统、工业控制终端APP
  • 嵌入式:智能家电控制面板、医疗设备操作界面

Qt核心工具

Qt提供了一套完整的开发工具链,核心设计工具如下:

工具名称 功能描述 官网链接(用户自行补充)
Qt Designer 基于Qt Widgets的GUI可视化设计工具,支持所见即所得(WYSIWYG),已集成到Qt Creator 官网链接
QMLLive Qt Quick应用实时重加载环境,减少UI设计迭代的部署/测试时间 官网链接
Qt Design Studio 专注于动画用户界面的设计与开发环境,适合Qt Quick场景 官网链接
Qt Shader Tools 跨平台着色器管道工具,支持Qt Quick及其他组件的图形处理/计算着色器 官网链接

应用程序创建

新建项目步骤(Qt Creator操作)

步骤1:选择项目模板

  1. 打开Qt Creator,选择「新建项目」
  2. 模板分类:「Application」→「Qt Widgets Application」(带窗口的APP,含Qt Designer主窗口)
    • 其他可选模板:Qt Console Application(无窗口)、Qt Quick Application(声明式UI)
  3. 点击「Choose...」进入下一步
项目模板选择界面

步骤2:设置项目名称与路径

  1. 项目名称:自定义(示例:QT_1PojDemo)
  2. 项目路径:必须无中文、无空格(示例:D:\GZ2536\08-QT)
  3. 可选:勾选「设为默认的项目路径」
  4. 点击「下一步」
项目路径设置界面
项目路径设置界面

步骤3:配置类信息

  1. 类名(Class name):默认即可(示例:myWindow)
  2. 基类(Base class):默认「QMainWindow」(桌面应用常用)
  3. 自动生成文件:
    • 头文件(Header file):mywindow.h
    • 源文件(Source file):mywindow.cpp
    • 表单文件(Form file):mywindow.ui(Qt Designer设计文件)
  4. 保持默认设置,点击「下一步」
类信息配置界面

步骤4:选择编译套件(Kit Selection)

  1. 勾选可用套件:Desktop Qt 5.14.2 MinGW 64-bit(必选,Windows平台编译核心)
  2. 其他套件:根据目标平台选择(如Android、iOS套件)
  3. 点击「下一步」
编译套件选择界面

步骤5:项目总结与完成

  1. 确认项目配置信息无误
  2. 点击「完成」,生成项目结构(包含.pro文件、源码文件、UI文件)
项目总结界面

项目配置关键说明

  • .pro文件:项目配置文件,记录模块依赖、目标平台、编译选项等(如QT += core gui widgets表示依赖核心模块)
  • 编译套件:MinGW 64-bit是Windows平台必选,用于编译生成可执行文件(.exe)
  • UI文件(.ui):Qt Designer的可视化设计文件,编译时会自动转换为C++代码(ui_mywindow.h)
  • 核心文件关系:mywindow.h(类声明)→ mywindow.cpp(类实现)→ mywindow.ui(界面设计)

补充:项目编译与运行

  1. 编译:点击Qt Creator工具栏「构建」按钮(或快捷键Ctrl+B)
  2. 运行:点击「运行」按钮(或快捷键Ctrl+R),需确保无编译错误
  3. 调试:设置断点后,点击「调试」按钮(或快捷键F5)

Qt Designer设计器功能

Qt Designer是可视化界面设计工具,集成在Qt Creator中,界面分为五大核心区域,支持拖拽组件、设置属性、关联信号与槽。

Qt Designer完整界面

五大核心区域详解

区域1:窗口组件盒区域(左侧)

  • 功能:提供所有内置UI组件,按类别划分,支持拖拽到编辑区
  • 核心分类(7类):
    1. Layouts(布局):Vertical Layout(垂直布局)、Horizontal Layout(水平布局)、Grid Layout(网格布局)、Form Layout(表单布局)
    2. Spacers(间隔器):Horizontal Spacer(水平间隔)、Vertical Spacer(垂直间隔)
    3. Buttons(按钮):Push Button(普通按钮)、Tool Button(工具按钮)、Radio Button(单选按钮)、Check Box(复选框)、Dialog Button Box(对话框按钮组)
    4. Item View(基于视图的组件):List View、Tree View、Table View、Column View等
    5. Item Widget(基于部件的组件):List Widget、Tree Widget、Table Widget等
    6. Containers(容器):Group Box、Tab Widget、Stacked Widget等(用于分组或切换界面)
    7. Input Widget(输入组件):Line Edit(单行输入框)、Text Edit(多行输入框)、Spin Box(数值调节框)等
    8. Display Widget(显示组件):Label(标签)、Progress Bar(进度条)、LCD Number(数码管显示)等

区域2:编辑预览区域(中间)

  • 功能:可视化编辑界面,所见即所得
  • 操作:
    1. 拖拽组件到该区域,自动显示实际效果
    2. 选中组件后,可拖动边缘调节大小、拖动组件调整位置
    3. 右键组件可设置布局、添加菜单、关联信号与槽
    4. 支持缩放预览,测试不同分辨率下的界面适配

区域3:信号与槽编辑区域(底部/右侧)

  • 功能:设置组件的信号(事件触发)与槽函数(响应逻辑)的关联
  • 核心操作:
    1. 信号:组件触发的事件(如按钮的clicked(点击)、文本框的textChanged(文本变化))
    2. 槽函数:响应信号的函数(如按钮点击后执行的on_pushButton_clicked())
    3. 编辑方式:通过「Signals & Slots Editor」可视化关联,或手动编写代码关联

区域4:对象列表区域(右侧上)

  • 功能:显示当前界面的所有组件对象,以及组件的父子层次关系
  • 说明:
    • 顶层对象:如QMainWindow(主窗口)、centralwidget(中心部件)
    • 子对象:如按钮、标签等,隶属于顶层对象或容器组件
    • 作用:快速选中组件(尤其当组件被遮挡时),查看组件归属

区域5:对象属性编辑区域(右侧下)

  • 功能:查看并修改选中组件的属性,实时生效
  • 常用属性说明:
    属性名称 功能描述
    objectName 组件唯一标识名(代码中通过该名称访问组件,如ui->pushButton)
    enabled 组件是否可用(true=可用,false=灰色不可点击)
    geometry 组件位置与大小(格式:[(x,y), 宽度×高度],x/y为相对于父组件的坐标)
    windowTitle 窗口标题(仅顶层窗口有效)
    text 组件显示文本(如按钮的「确定」、标签的「用户名:」)
    styleSheet 组件样式(支持CSS语法,如设置背景色、字体、边框等)
    sizePolicy 大小策略(如Preferred=优先自适应、Fixed=固定大小、Expanding=占满剩余空间)
    windowModality 窗口模态(NonModal=非模态,Modal=模态(阻塞父窗口))

常用设计器操作技巧

  1. 布局管理:选中多个组件,右键选择「布局」→「垂直布局」,组件会自动自适应排列,避免界面拉伸时错乱
  2. 组件对齐:使用工具栏的「对齐」按钮(左对齐、居中对齐、等间距分布)
  3. 样式设置:在属性编辑器的styleSheet中输入CSS样式,如background-color: rgb(255,255,200); font-size: 14px;(浅黄色背景+14号字体)
  4. 快捷键:Ctrl+Z(撤销)、Ctrl+Y(重做)、Ctrl+S(保存UI文件)、F4(切换UI文件与源码文件)

补充

Qt入门必备基础

  • 编程语言:C++基础(类、继承、指针、引用),QML(可选,Qt Quick场景)
  • 核心概念:信号与槽(Qt特有的事件响应机制,替代传统回调函数)
  • 项目结构:理解.pro文件、头文件(.h)、源文件(.cpp)、UI文件(.ui)的关系
  • 跨平台注意事项:避免使用平台相关API,文件路径用Qt提供的QDir类处理

Qt Creator常用快捷键

快捷键 功能描述
Ctrl+N 新建项目/文件
Ctrl+O 打开文件
Ctrl+S 保存文件
Ctrl+B 编译项目
Ctrl+R 运行项目
F5 开始调试
F10 单步调试(跳过函数)
F11 单步调试(进入函数)
Ctrl+/ 注释/取消注释代码
Ctrl+F 查找文本
Ctrl+Shift+F 全局查找
F4 切换.ui文件与.ui.h文件
Alt+Enter 快速修复代码错误(如添加头文件)

入门常见问题排查

  1. 项目编译失败:
    • 检查项目路径是否有中文/空格
    • 确认编译套件(MinGW 64-bit)已正确选择
    • 检查.pro文件是否添加必要模块(如QT += widgets
  2. 组件无法显示:
    • 确认组件已添加到布局中,或设置了正确的geometry属性
    • 检查组件的enabled属性是否为true
  3. 信号与槽关联失败:
    • 确认信号和槽函数的参数类型匹配(如clicked()无参数,槽函数也需无参数)
    • 检查组件的objectName是否正确(代码中访问时需与UI设计一致)
  4. 运行时崩溃:
    • 避免访问空指针(如未初始化的组件指针)
    • 检查数组/容器的索引是否越界

posted @ 2026-01-05 08:50  Jaklin  阅读(49)  评论(0)    收藏  举报