(一)QT的简介与环境配置WIN11
目录
一、QT的概述
二、QT的下载
三、简单编程
常用快捷键
一、QT的概述
简介
Qt(发音:[kjuːt],类似“cute”)是一个跨平台的开发库,主要用于开发图形用户界面(GUI)应用程序,也支持命令行用户界面(CUI)程序。Qt支持多种操作系统平台,包括常见的Windows、Linux、Unix,智能手机操作系统如Android、iOS、WinPhone,甚至一些嵌入式系统(如QNX、VxWorks)。此外,Qt库功能逐步丰富,包含众多模块和第三方扩展。
Qt使用C++开发,且支持Python、Ruby、Perl等脚本语言绑定,这意味着可以使用这些语言开发Qt应用程序。最初,Qt是作为商业授权库发布的,后期发展为开源,并且受到开源社区的支持和扩展。
对于初学者来说,可能会面临选择使用C++或QML编程的问题。C++是Qt传统的编程语言,适合桌面应用程序开发。而QML则主要用于移动应用开发,特别是在Qt5引入QML之后,针对移动设备的开发需求更为明显。QML为开发者提供了许多与手机移动设备相关的模块,如GPS定位、蓝牙、WebKit等。
以下是 QT 的一些主要特点:
跨平台支持
- 特性:Qt 是一个真正的跨平台框架,支持多个操作系统(Windows、macOS、Linux、Android、iOS 等)。
- 优势:同一套代码可以在不同平台上编译和运行,显著提高开发效率和一致性。
高度集成的开发环境
- 工具:Qt Creator 是专为 Qt 开发打造的 IDE,集成代码编辑、调试、界面设计等功能。
- 注意:Qt 是框架,Qt Creator 是 IDE,要明确区分。
强大的 GUI 库
- 特性:内置丰富的 UI 控件和布局管理器,便于开发者快速构建功能齐全的图形界面。
- 自定义能力:支持定制样式和主题,界面可根据用户需求和平台特点灵活调整。
响应式编程
- 信号与槽机制:Qt 独特的事件驱动架构,通过信号与槽实现对象间的高效通信,使代码简洁、逻辑清晰。
- 应用场景:适合处理用户交互和异步任务。
数据库支持
- 支持范围:兼容 MySQL、SQLite、PostgreSQL 等主流数据库。
- 优势:内置接口简化了数据持久化和数据库操作。
多媒体功能
- 接口丰富:支持音频播放、视频处理、图像处理等功能。
- 扩展性:适合开发多媒体应用,如播放器、图像编辑工具等。
发展史
1991年 Qt最早由芬兰奇趣科技开发
1996年 进入商业领域,它也是目前流行的Linux桌面环境KDE的基础
2008年 奇趣科技被诺基亚公司收购,Qt称为诺基亚旗下的编程基础
2012年 Qt又被Digia公司(芬兰一家软件公司)收购
2014年4月 跨平台的集成开发环境Qt Creator3.1.0发布,同年5月20日配发了Qt5.3正式版,至此Qt实现了对iOS、Android、WP等各平台的全面支持。
Qt最早由挪威的Eirik Chambe-Eng和Haavard Nord于1991年开发,1994年成立了Trolltech公司。最初,Qt是作为商业授权的跨平台开发库发布,2000年Trolltech为开源社区发布了遵循GPL许可证的开源版本。2008年,诺基亚收购了Trolltech,并引入了LGPL授权模式。此后,诺基亚联合英特尔开发了MeeGo操作系统,尽管该系统未能成功推广,但Qt的开源和商业授权业务也得到了进一步发展。2011年,Digia公司收购了Qt的商业授权业务,并在2014年成立了Qt公司,独立运营Qt的商业授权业务。
Qt和KDE
Qt和KDE的历史有着密切的联系。KDE是Linux操作系统的桌面环境之一,它与GNOME竞争。由于Qt最初是商业授权软件,这使得KDE社区在使用Qt时面临商业授权的风险。为了克服这一问题,Trolltech决定为Qt添加GPL开源授权,允许开发者自由使用Qt开发开源应用程序。这一举措使得KDE社区得以继续发展,并解决了其与GNOME的竞争问题。
Qt的开源授权包括两种模式:GPL(GNU General Public License)和LGPL(GNU Lesser General Public License)。GPL要求任何使用Qt的程序必须开源,而LGPL则允许开发者在不修改Qt库的情况下,使用Qt库开发商业应用程序。
Qt和智能手机
Qt目前支持包括Android、iOS、WinPhone等在内的主流智能手机操作系统。尽管MeeGo操作系统最终未能成功推广,但其衍生版Sailfish(旗鱼)和Tizen(泰泽)系统仍然在智能手机领域有一定影响。Qt的开源版本也为这些系统提供了支持。
Qt公司推出了针对移动开发的商业版本,开发者可以使用该版本开发Android、iOS、WinPhone应用。如果不涉及商业用途,开源版本也足以满足大多数开发需求。
Qt 商业公司:Qt | Tools for Each Stage of Software Development Lifecycle
Qt 开源项目:The Qt Project
二、QT的下载
官网https://www.qt.io/zh-cn/https://www.qt.io/zh-cn/
官网下载
下载有以下两种
1、下载地址:Qt | 软件开发全周期的各阶段工具
2、进入官网后,点击Download.Try.
选择社区版【community】,并下拉页面:
可以看见
配置
下载完成后,找到下载器所在的文件夹,确保下载器在该文件夹之后,点击鼠标右键,点击【在终端中打开】
,这样就可以打开终端并使其工作目录在这个文件下。
注册登录后:
如图勾选,点击【下一步】
选择自定义安装文件夹,点击【自定义安装】
,勾选后点击【下一步】:
如图勾选,点击【筛选】
,这样可以看到很多可以下载的版本:
然后,一直点击【下一步】即可:
这一步根据网速耗时。
点击【完成】
三、简单编程
创建
选择项目模板后点击【选择】
,一般选择【Application(Qt)】
下的【Qt Widgets Application】
即可:
输入【项目名称】
,选择【项目路径】
,点击【下一步】:
【注意】项目名称和项目路径不能包含中文符号、空格、特殊字符等
构建
选择构建工具:
qmake是Qt提供的构建工具,用于简化 Qt 项目的构建过程。
CMake是一个跨平台的开源构建工具,用于管理和构建 C++ 程序的软件项目。
Qbs,全称:Qt Build Suite,是由Qt官方提供的一个跨平台构建工具,用于构建和管理Qt和非Qt项目。它是Qt Creator集成开发环境(IDE)的一部分,但也可以独立使用。
类
选择基础类和主类的名字
基础类提供了QMainWindow、QWidget、QDialog,选择默认的QMainWindow即可,QWidget要轻量简单一点,也可以,QDialog用的少。主类Class Name可以自定义,不过要符合C++的语言规范。
选择构建套件
- 使用QtCreator编写时,必须选择MinGW编译套件,例如选择Desktop Qt 6.5.3 MinGW 64-bit。
- 如果使用Microsoft Visual Studio编写Qt程序则必须选择MSVC编译套件,这个后文有说明
- 出现黄色感叹号不用管他
点击【完成】
运行一下
有窗口弹出即为成功。
常用快捷键
基础操作
- 运行程序:
Ctrl + R
- 编译项目:
Ctrl + B
- 打开帮助文档:
F1
- 连续点击
F1
可跳转到帮助界面。
代码导航与编辑
- 跳到符号定义:
F2
或Ctrl + 鼠标点击
- 注释/取消注释:
Ctrl + /
- 字体缩放:
Ctrl + 鼠标滚轮
- 整行移动代码:
Ctrl + Shift + ↑ 或 ↓
- 自动对齐:
Ctrl + I
- 在
.h
和.cpp
文件间跳转:F4
相关文章:

(一)QT的简介与环境配置WIN11
目录 一、QT的概述 二、QT的下载 三、简单编程 常用快捷键 一、QT的概述 简介 Qt(发音:[kjuːt],类似“cute”)是一个跨平台的开发库,主要用于开发图形用户界面(GUI)应用程序,…...

在 Windows 系统上,将 Ubuntu 从 C 盘 迁移到 D 盘
在 Windows 系统上,如果你使用的是 WSL(Windows Subsystem for Linux)并安装了 Ubuntu,你可以将 Ubuntu 从 C 盘 迁移到 D 盘。迁移过程涉及导出当前的 Ubuntu 发行版,然后将其导入到 D 盘的目标目录。以下是详细的步骤…...

vue2的$el.querySelector在vue3中怎么写
这个也属于直接操作 dom 了,不建议在项目中这样操作,不过我是在vue2升级vue3的时候遇到的,是以前同事写的代码,也没办法 先来看一下对比 在vue2中获取实例是直接通过 this.$refs.xxx 获取绑定属性 refxxx 的实例,并且…...
GPSd定时检测保活TCP GPS源
为了在 TCP GPS 源丢失连接时自动重新连接,可以编写一个监控脚本,定期检查 gpspipe 输出中的 TCP 源数据是否存在。如果检测到丢失,则使用 gpsdctl 或直接命令重新添加 TCP 源。 1、工具 检查并安装必要工具,本例需要使用 gpspi…...

IDEA中Maven使用的踩坑与最佳实践
文章目录 IDEA中Maven使用的踩坑与最佳实践一、环境配置类问题1. Maven环境配置2. IDEA中Maven配置建议 二、常见问题与解决方案1. 依赖下载失败2. 依赖冲突解决3. 编译问题修复 三、效率提升技巧1. IDEA Maven Helper插件使用2. 常用Maven命令配置3. 多模块项目配置4. 资源文件…...
使用 Python 调用 OpenAI 的接口初识
使用 Python 调用 OpenAI 的接口非常简单,以下将结合实际代码示例和使用场景进行详细讲解,步骤如下: 文章目录 1. 安装 OpenAI 官方库2. 准备 API Key3. 基本使用示例:调用 ChatGPT**代码示例:****运行结果:…...

2025 最新flutter面试总结
目录 1.Dart是值传递还是引用传递? 2.Flutter 是单引擎还是双引擎 3. StatelessWidget 和 StatefulWidget 在 Flutter 中有什么区别? 4.简述Dart语音特性 5. Navigator 是什么?在 Flutter 中 Routes 是什么? 6、Dart 是不是…...
【MQ】RabbitMq的可靠性保证
消息队列中的可靠性主要是分为三部分: 消息不丢失:确保消息从生产者发送到消费者消息不丢失消息不重复:确保消息不被重复消费消息顺序性:确保消费的顺序性 解决方案主要有以下几部分: 消息不丢失 生产者确认机制持久…...

STM32 GPIO配置 点亮LED灯
本次是基于STM32F407ZET6做一个GPIO配置,实现点灯实验。 新建文件 LED.c、LED.h文件,将其封装到Driver文件中。 双击Driver文件将LED.c添加进来 编写头文件,这里注意需要将Driver头文件声明一下。 在LED.c、main.c里面引入头文件LED.h LED初…...
Flink把kafa数据写入Doris的N种方法及对比。
用Flink+Doris来开发实时数仓,首要解决是如何接入kafka实时流,下面是参考Doris官方文档和代码,在自己项目开发的实践中总结,包括一些容易踩坑的细节。 目录 Routine Load方法 接入kafka实时数据 踩坑的问题细节 Flink Doris Connector方法 完整示例 Routine Load方法…...
Vue - 标签中 ref 属性的使用
在 Vue 3 中,ref 属性用于在模板中引用 DOM 元素或组件实例。通过 ref,可以直接访问这些元素或组件的实例,从而进行更复杂的操作,比如获取元素的尺寸、调用组件的方法等。 基本语法: <template><div ref&qu…...

leetcode-不同路径问题
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? 看见题目…...
MongoDB 数据库备份和恢复全攻略
在当今数据驱动的时代,数据库的稳定运行和数据安全至关重要。MongoDB 作为一款流行的 NoSQL 数据库,以其灵活的文档模型和高扩展性备受青睐。然而,无论数据库多么强大,数据丢失的风险始终存在,因此掌握 MongoDB 的备份…...

CentOS7使用源码安装PHP8教程整理
CentOS7使用源码安装PHP8教程整理 下载安装包解压下载的php tar源码包安装所需的一些依赖扩展库安装前的配置修改配置文件1、进入php8的安装包 配置环境变量开机自启启动服务创建软连接常见问题1、checking for icu-uc > 50.1 icu-io icu-i18n... no2、configure: error: Pa…...

Baklib助力内容中台实施的最佳实践与成功案例探索
内容概要 在当今数字化发展的背景下,内容中台的概念逐渐受到重视。内容中台不仅仅是一个技术平台,更是企业在内容管理和运营效率提升方面的重要助力。它通过整合内部资源,实现信息的集中管理与高效利用,帮助企业应对日益复杂的市…...

rocketmq-product-send方法源码分析
先看有哪些send方法 首先说红圈的 有3个红圈。归类成3种发送方式。假设前提条件,发送的topic,有3个broker,每个broker总共4个write队列,总共有12个队列。 普通发送。负载均衡12个队列。指定超时时间指定MessageQueue,发送&#…...
python flask中使用or查询和and查询,还有同时使用or、and的情况
在 Flask 中处理数据库查询时,通常会结合使用 ORM 工具,例如 SQLAlchemy。以下是 or 查询、and 查询以及两者同时使用的示例。 文章目录 基础准备1. 使用 or_ 查询2. 使用 and_ 查询3. 同时使用 or_ 和 and_4. 更加复杂的嵌套查询 基础准备 假设有一个…...
【第一天】零基础入门刷题Python-算法篇-数据结构与算法的介绍(持续更新)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Python数据结构与算法的详细介绍1.基本概念2.Python中的数据结构1. 列表(List)2. 元组(Tuple)3. 字典&#…...

租房管理系统实现智能化租赁提升用户体验与运营效率
内容概要 在当今快速发展的租赁市场中,租房管理系统的智能化转型显得尤为重要。它不仅帮助房东和租客之间建立更高效的沟通桥梁,还优化了整个租赁流程。通过智能化技术,这套系统能够自动处理资产管理、合同签署、财务管理等所有关键环节。这…...

python3+TensorFlow 2.x(四)反向传播
目录 反向传播算法 反向传播算法基本步骤: 反向中的参数变化 总结 反向传播算法 反向传播算法(Backpropagation)是训练人工神经网络时使用的一个重要算法,它是通过计算梯度并优化神经网络的权重来最小化误差。反向传播算法的核…...

深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...

GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...