(一)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)是训练人工神经网络时使用的一个重要算法,它是通过计算梯度并优化神经网络的权重来最小化误差。反向传播算法的核…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...