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

QT(1)

一、Qt简介

1、Qt是什么

        Qt是一门​​C++实践课​​,核心定位是​​系统性认识图形用户界面(GUI)编程​​(区别于传统MFC框架),同时覆盖多线程、数据库、图像处理、网络通信、文件IO等传统编程技术,是衔接基础C++与实际项目开发的重要桥梁。

        Qt的本质是​​基于C++的跨平台GUI开发框架​​,但其功能远超图形界面:通过模块化设计,支持从桌面应用(如Skype、WPS)到嵌入式系统(如车载导航、工业控制)的全场景开发,真正实现“一次编程,到处编译”。

        以下是Qt开发的具体产品:

2、Qt的核心优势

  •  

    跨平台特性​​:支持Windows、Linux、macOS、Android、iOS等主流平台,开发时无需修改代码,仅需针对目标平台编译,大幅降低维护成本。

  •  

    ​面向对象设计​​:采用C++面向对象编程范式,提供类继承、多态等特性,代码可复用性强,适合大型项目开发。

  •  

    ​丰富的API与工具链​​:内置250+个C++类库,覆盖GUI、网络、数据库等全领域;配套Qt Creator集成开发环境(支持代码编辑、调试、UI设计),并提供详细官方文档,降低学习门槛。

  •  

    ​开源与社区支持​​:开源版本(LGPL协议)允许商业使用,社区活跃,学习资料(教程、论坛、示例代码)丰富,便于开发者解决问题。

3、Qt项目基础结构

3.1 项目配置文件(.pro)

.pro文件是Qt项目的​​核心配置文件​​,用于定义模块依赖、源文件路径、编译选项等。例如,一个基础Qt Widgets项目的.pro文件通常包含:

QT       += core gui  # 引入核心模块与GUI模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets  # Qt5及以上需添加widgets模块
TARGET = qt_demo    # 生成的可执行文件名
TEMPLATE = app      # 项目类型为应用程序
SOURCES += main.cpp dialog.cpp  # 源文件列表
HEADERS += dialog.h  # 头文件列表

该文件由Qt Creator自动生成,修改时需注意语法规范(如缩进、注释)。

3.2 用户文件(.pro.user)

.pro.user文件是Qt Creator根据当前开发环境(如编译器路径、工作目录)自动生成的​​用户配置文件​​,包含项目特定的环境设置。由于不同计算机的开发环境差异较大,​​提交代码时需删除该文件​​,避免他人使用时出现环境冲突。

3.3 主文件(main.cpp)

main.cpp是程序的​​入口文件​​,主要功能是创建应用程序对象(QApplication)和主窗口对象(自定义对话框/主窗口),并启动事件循环。示例代码:

#include "dialog.h"  // 自定义对话框头文件
#include <QApplication>  // Qt应用程序核心类int main(int argc, char *argv[]) {QApplication a(argc, argv);  // 创建应用程序对象(管理控制流、事件循环)Dialog w;                    // 创建自定义对话框对象w.show();                    // 显示对话框(非模态显示)return a.exec();             // 进入事件循环(阻塞主线程,等待用户操作)
}

3.4 头文件(.h)

头文件用于​​声明自定义类​​及其成员函数、成员变量,遵循C++头文件规范(如#ifndef/#define防止重复包含)。示例(dialog.h):

#ifndef DIALOG_H  // 防止重复包含
#define DIALOG_H#include <QDialog>  // 引入QDialog基类(Qt自带,以Q开头)class Dialog : public QDialog {  // 自定义对话框类,公有继承QDialogQ_OBJECT  // 必须添加的宏,支持信号与槽机制public:Dialog(QWidget *parent = nullptr);  // 构造函数(默认参数为nullptr)~Dialog();  // 虚析构函数(确保派生类对象正确释放)
};#endif // DIALOG_H

3.5 源文件(.cpp)

源文件用于​​实现头文件中声明的成员函数​​,是程序逻辑的主要载体。示例(dialog.cpp):

#include "dialog.h"  // 包含自定义头文件
#include <QDebug>    // 引入调试输出类Dialog::Dialog(QWidget *parent) : QDialog(parent) {  // 构造函数实现(透传parent参数)qDebug() << "构造函数被调用";  // 输出调试信息(到Qt Creator控制台)
}Dialog::~Dialog() {  // 析构函数实现qDebug() << "析构函数被调用";
}

源文件需包含对应的头文件,并实现所有声明的成员函数。

4、Qt开发关键注意事项

4.1 编码设置

创建Qt项目时,需将​​编码恢复为默认值​​(UTF-8),避免中文乱码。操作步骤:点击Qt Creator顶部菜单栏“工具”→“选项”→“文本编辑器”→“行为”,设置“默认编码”为“UTF-8”。

4.2 构建与工作目录

  •  

    ​构建目录​​:存放编译生成的中间文件(如.o文件、Makefile),默认路径为项目目录下的build-项目名-编译器-版本(如build-qt_demo-Desktop_Qt_5_15_2_MinGW_64_bit-Debug)。若项目无法编译,可尝试取消“Shadow Build”选项(合并构建目录与工作目录,但不推荐日常使用)。

  •  

    ​工作目录​​:存放项目源代码、资源文件等开发文件,即创建项目时设置的路径。可通过“项目”→“构建设置”查看或修改工作目录。

4.3 调试信息输出

Qt中​​调试信息需使用qDebug()函数​​(而非printf或cout),其特点包括:自动添加空格、每条语句结束后自动换行,输出到Qt Creator的“应用程序输出”面板(仅开发者可见)。示例:

qDebug() << "当前数值:" << value << ",状态:" << status;

该函数支持连续输出,格式清晰,便于调试。

4.4 运行与修改同步

若修改代码后未生效,需​​关闭正在运行的项目​​(点击Qt Creator顶部的“停止”按钮),再重新运行。这是因为Qt应用程序运行时会锁定可执行文件,修改后需重启才能加载最新代码。

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

相关文章:

  • 独立显卡接口操作指南
  • 小程序开发指南(四)(UI 框架整合)
  • Linux系统网络管理
  • UE5 UI遮罩
  • 人形机器人产业风口下,低延迟音视频传输如何成为核心竞争力
  • Linux笔记9——shell编程基础-3
  • OpenFeign的原理解析
  • FMS回顾和总结
  • C++ 中 `std::map` 的 `insert` 函数
  • 【机器学习项目 心脏病预测】
  • 【广告系列】流量归因模型
  • centos 用 docker 方式安装 dufs
  • 【C++11】auto关键字:自动类型推导
  • Python爬虫实战: 爬虫常用到的技术及方案详解
  • Leetcode top100之链表排序
  • Swift 解法详解 LeetCode 362:敲击计数器,让数据统计更高效
  • 【猿人学】web第一届 第16题 js-逆向 windows蜜罐 / webpack初体验
  • 通过C#上位机串口写入和读取浮点数到stm32实战5(通过串口读取bmp280气压计的数值并在上位机显示)
  • java 并发编程八股-多线程篇
  • 【已解决】统信UOS安装后没有有线网络,缺少Chengdu Haiguang IC Design Co., Ltd. 10 Gb Ethernet网卡驱动
  • 支付宝直连商户,自动处理支付交易投诉,支持多支付宝应用
  • 【VS2022】背景设置详细教程(背景透明)
  • AI 时代“驯导师”职业发展方向探究
  • 用AI生成的一个BadgerDB的管理工具
  • 深入剖析Hugging Face Transformers中的KV Cache
  • Element plus日期选择器从今天开始、时间跨度为3天
  • 【Android 16】Android W 的冻结机制框架层分析
  • 茶艺实训室建设方案:打造沉浸式茶文化教学空间
  • SAVITECH盛微先进SAVIAUDIO音频解码芯片方案与应用
  • Chromium 源码中的单例管理:LazyInstance 与 NoDestructor 的深入解析与实战对比