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

Qt 概述

Qt 背景介绍

什么是 Qt

Qt 是⼀个 跨平台的 C++ 图形⽤⼾界⾯应⽤程序框架 。它为应⽤程序开发者提供了建⽴艺术级图形界⾯所需的所有功能。它是完全⾯向对象的,很容易扩展。Qt 为开发者提供了⼀种基于组件的开发模式,开发者可以通过简单的拖拽和组合来实现复杂的应⽤程序,同时也可以使⽤ C++ 语⾔进⾏⾼级开发。
图形⽤⼾界⾯ :指采⽤图形⽅式显⽰的计算机操作⽤⼾界⾯,是计算机与其使⽤者之间的对话接⼝,是计算机系统的重要组成部分。如:Android ⼿机图形⽤⼾界⾯ 和 IOS ⼿机图形⽤⼾界⾯。

 

Qt 的发展史

1991 年 Qt 最早由奇趣科技开发;
1996 年 进⼊商业领域,它也是⽬前流⾏的 Linux 桌⾯环境 KDE 的基础;
2008 年 奇趣科技被诺基亚公司收购,Qt 成为诺基亚旗下的编程⼯具;
2012 年 Qt ⼜被 Digia 公司收购;
2014 年 4 ⽉ 跨平台的集成开发环境 Qt Creator3.1.0 发布,同年 5 ⽉ 20 ⽇发布了 Qt 5.3 正式版,⾄此 Qt 实现了对 IOS、Android、Embedded 等各平台的全⾯⽀持。
Qt ⽀持的平台
Windows ‒ XP、Vista、Win7、Win8、Win2008、Win10
Unix/X11 ‒ Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX、FreeBSD、BSD/OS、和其他很多 X11 平台
Macintosh ‒ Mac OS X
Embedded ‒ 有帧缓冲⽀持的嵌⼊式 Linux 平台,Windows CE
Android

Qt 版本

⽬前最新的版本是 Qt 6. 但是相对来说 Qt 6 和 Qt 5 之间的核⼼功能区别不⼤. 并且企业中也仍然有⼤量的项⽬在使⽤ Qt 5.
因此咱们仍然使⽤ Qt 5 版本来进⾏介绍
另外 Qt 在发布的时候还提供了两种许可证.
商业许可: 开发者以商业⽬的使⽤Qt框架进⾏开发和发布软件的许可,开发者需要购买商业许可并按照相关规定使⽤Qt框架。商业许可提供了更多的功能服务,适合于商业软件开发。
开源许可: 开发者以⾮商业⽬的使⽤Qt框架进⾏开发和发布软件的许可,开发者可以免费使⽤Qt框架,但需要遵守开源许可协议的要求,如在软件中包含Qt许可协议的声明等。

Qt 的优点

跨平台,⼏乎⽀持所有的平台;
接⼝简单,容易上⼿,学习 QT 框架对学习其他框架有参考意义。
⼀定程度上简化了内存回收机制; (半自动的垃圾回收,能够简化内存释放,也能够尽可能小的影响程序的运行效率)
开发效率⾼,能够快速的构建应⽤程序。
有很好的社区氛围,市场份额在缓慢上升。
可以进⾏嵌⼊式开发。

Qt 的应⽤场景

桌⾯应⽤程序
Qt 能够创建各种类型的桌⾯应⽤程序,包括⽂件管理器、媒体播放器、绘图程序等。Qt 应⽤程序⽀持多种操作系统,可以运⾏在 Windows、Linux、macOS 等桌⾯操作系统上。
移动应⽤程序
Qt ⽀持 Android 和 IOS 移动操作系统,为应⽤程序提供了强⼤的跨平台能⼒。可以使⽤ Qt 构建各种移动应⽤程序,例如社交应⽤、游戏、娱乐等。
嵌⼊式系统
Qt 在嵌⼊式领域应⽤⾮常⼴泛,它可以构建⾯向各种设备的图形应⽤程序,在机顶盒、⻋载娱乐系统、安防监控设备等领域具有⼴泛的应⽤。

Qt 的成功案例

Linux 桌⾯环境 KDE
WPS Office 办公软件

 

搭建 Qt 开发环境

Qt 的开发⼯具概述

 Qt ⽀持多种开发⼯具,其中⽐较常⽤的开发⼯具有:Qt Creator、Visual Studio、Eclipse.

咱们后续使⽤ Qt Creator 开发 Qt 程序

Qt SDK 的下载和安装

Qt SDK 的下载
Qt 下载官⽹: Index of /archive/qt
注意:
为什么要设置环境变量?
答:环境变量是在操作系统中⼀个具有特定名字的对象,它包含了⼀个或者多个应⽤程序将要使
⽤到的信息。
例如Windows 和 DOS 操作系统中的 path 环境变量,当要求系统运⾏⼀个程序⽽没有告诉它
程序所在的完整路径时,系统除了在当前⽬录下⾯寻找此程序外,还会到 path 中指定的路径
去找。
在 Windows 上设置 Qt 的环境变量是为了能够在命令⾏或其他应⽤程序中直接访问 Qt 相关
的命令和⼯具。

使⽤ Qt Creator 新建项⽬

认识 Qt Creator 界⾯

main.cpp

widget.h

 

 

widget.cpp

 

widget.ui

 

 

.pro

Qt Hello World 程序

使⽤ "标签" 实现

纯代码⽅式实现

 可视化操作实现

(1)双击:" widget.ui " ⽂件;
(2)拖拽 "标签" ⾄ UI 设计界⾯中,并双击修改标签内容;

其他方式实现(同上类似,这里就不过多描述)

乱码解释(打印中文出现乱码)

例如:

解决方法:

小结:

Qt 编程注意事项

Qt 中的命名规范
类名:⾸字⺟⼤写,单词和单词之间⾸字⺟⼤写;
函数名及变量名:⾸字⺟⼩写,单词和单词之间⾸字⺟⼤写;
💡 Qt 偏好驼峰命名法. 这⼀点不像之前偏好蛇形命名.

Qt Creator 中的快捷键

注释:ctrl + /
运⾏:ctrl + R
编译:ctrl + B
字体缩放:ctrl + ⿏标滑轮
查找:ctrl + F
整⾏移动:ctrl + shift + ⬆/⬇
帮助⽂档:F1
⾃动对⻬:ctrl + i;
同名之间的 .h 和 .cpp 的切换:F4
⽣成函数声明的对应定义: alt + enter

使⽤帮助⽂档

打开帮助⽂档有三种⽅式. 实际编程中使⽤哪种都可以.
1、光标放到要查询的类名/⽅法名上, 直接按 F1
2、Qt Creator 左侧边栏中直接⽤⿏标单击 "帮助" 按钮
3、找到 Qt Creator 的安装路径,在 "bin" ⽂件夹下找到 assistant.exe,双击打开;

Qt 窗⼝坐标体系

坐标体系:以左上⻆为原点(0,0),X向右增加,Y向下增加。

相关文章:

  • 什么是SPI,和API有啥区别
  • RustGUI学习(iced/iced_aw)之扩展小部件(二十七):如何使用number_input部件?
  • 嵌入式0基础开始学习 ⅠC语言(2)运算符与表达式
  • 移动云以深度融合之服务,令“大”智慧贯穿云端
  • mysql IF语句,模糊检索
  • Python——二维字典
  • MybatisPlus中自定义sql
  • 【数据结构】二叉树的认识与实现
  • BGP策略实验(路径属性和选路规则)
  • C# 集合(六) —— 自定义集合Collection类
  • 音视频开发8 音视频中SDL的使用,SDL 在windows上环境搭建,SDL 使用 以及 常用 API说明,show YUV and play PCM
  • C++第十七弹---string使用(下)
  • 详细分析Element Plus中的ElMessageBox弹窗用法(附Demo及模版)
  • Java 三种主流的消息中间件 RabbitMQ、Kafka 和 RocketMQ 特点以及适用,使用场景 学习总结
  • 【设计模式】JAVA Design Patterns——Command(事务模式)
  • $translatePartialLoader加载失败及解决方式
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • Angular Elements 及其运作原理
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • mongo索引构建
  • PAT A1017 优先队列
  • uni-app项目数字滚动
  • unity如何实现一个固定宽度的orthagraphic相机
  • 阿里云Kubernetes容器服务上体验Knative
  • 订阅Forge Viewer所有的事件
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 排序算法之--选择排序
  • 前端攻城师
  • 原生JS动态加载JS、CSS文件及代码脚本
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​iOS安全加固方法及实现
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (¥1011)-(一千零一拾一元整)输出
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (超详细)语音信号处理之特征提取
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (理论篇)httpmoudle和httphandler一览
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)mysql使用Navicat 导出和导入数据库
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .bat批处理(一):@echo off
  • .FileZilla的使用和主动模式被动模式介绍