QT——初识

news2024/10/1 6:21:48

目录

前言

1.创建一个QT项目

 2.查看生成的文件

3.打印一条hello world!

①使用控件实现

②使用代码实现

 4.Qt的编码格式

5.信号和槽

6.Qt中的坐标系


前言

QT是一款可跨平台的电脑客户端开发软件,本文将介绍一些有关QT使用的基础内容。


1.创建一个QT项目

图1        创建一个Qt项目

 2.查看生成的文件

图2        生成文件的主函数部分
图3        生成Widget文件的头文件部分
图4        生成的from file文件的头文件部分
图5        生成的form file文件

3.打印一条hello world!

①使用控件实现

图6        使用控件打印hello world

②使用代码实现

图7        使用代码实现打印hello world

需要注意的是,我们必须要使用new的方式在堆空间上创建一个Qlabel对象,因为如果在栈上创建这个类我们无法控制这个类合适释放,操作系统会自动为我们释放这个类,但是如果我们的类还没使用这个标签类的时候,这个类就已经释放了,我们就看不到结果了。此外由于我们将new出来的对象挂载到了对象树上,空间的释放无需我们进行操作,当该对象被使用完之后会由对象树自行释放。(关于对象树是什么将在之后的文章中进行介绍)。

验证:

首先向项目中添加一个C++文件,在该C++的源文件中定义一个Mylabel继承Qt中的QLabel类,而后在Mylabel类中的析构函数中添加打印信息来查看,new动态开辟的空间是否被自动释放,如果打印信息出现即意味着被释放,反之则没被释放。

图8        验证new动态创建的对象自动释放

 4.Qt的编码格式

我们将第3部分中的日志信息更改为中文,看看会发生什么。

图9        输出中文日志

我们不难发现在程序输出显示上的中文变为乱码,这是因为在C++中的默认字符集与Qt中的默认字符集是不同的所以对中文字符的解释出现了差异,进而表现出乱码。那么在Qt中如何解决由字符集引发的乱码问题呢?

图10        解决中文乱码问题

 我们可以使用Qt为我们提供的qDebug宏,在这个宏中封装了QDebug对象,qDebug可以当作cout使用但是不可以和endl等混用,qDebug还有一个好处就是当输出的信息过多时,我们不想打印这些信息的时候可以使用一个统一的开关直接将所有的输出信息,应为qDebug是一个宏所以比较好实现。

5.信号和槽

在Qt中有一个接口名为connect(),这个接口与网络中的接口名一致但是在功能上完全不同,在Qt中这个接口用于将信号和对应的处理方法相绑定。

这里我们使用“按钮”组件进行一个简单的示例演示,在按下按钮的时候可以做到文字变换的效果。

图11        connec使用示例       

6.Qt中的坐标系

 Qt中的坐标系不同于我们在数学上常见的右手坐标系,在Qt中采用的是左手坐标系。

图12        Qt中的坐标系

 我们是由代码生成的窗口中的内容默认都是集中在窗口的左上角。也就是左手坐标系的零点,如果我们想将代码生成的组件按照像素偏移可以使用move接口。

我们使用第5部分的代码继续进行演示。

图13        使用move接口偏移生成的按钮

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2181731.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“大数据+高职”:VR虚拟仿真实训室的发展前景

随着信息技术的迅猛发展,大数据技术与虚拟现实(VR)的融合正在为高等教育,尤其是高等职业教育(高职)带来革命性的变革。VR虚拟仿真实训室作为这一技术融合的典型应用,正逐步展现其在提升教育质量…

热补丁反调试API Hook—上跳/下跳

以 IsDebuggerPresent 函数为例,可以看到可以上跳(简单),也可以下跳(复杂)。 上跳: BYTE NewCodes[2] { 0xEB,0xF9 }; BYTE JmpCode[5] { 0xE9,0 }; BYTE oldCodes[2] { 0 };BOOL Mydebug() …

Tiny synopsis - 十分钟入门Linux系统【零基础】

10 minutes for Linux I) webpage address url resource II) context/excerpt former history OS not work conveniently, and expensive either…so write his own and free OS… initially, only a few functions with nearly over 10,000 lines of code, while the fate g…

PHP反序列化6(session反序列化)

考点6&#xff1a;session反序列化 <aside> &#x1f4a1; session的一些基础知识 </aside> Directive含义session.save_handlersession保存形式。默认为filessession.save_pathsession保存路径。session.serialize_handlersession序列化存储所用处理器。默认为…

仿真设计|基于51单片机的多模式音乐跑马灯

目录 具体实现功能 设计介绍 51单片机简介 资料内容 仿真实现&#xff08;protues8.7&#xff09; 程序&#xff08;Keil5&#xff09; 全部内容 资料获取 具体实现功能 1、16个发光二极管做跑马灯&#xff0c;跑马灯有10种模式。 2、按键可以切换跑马灯模式&#xff0…

雅思IELTS应该选择笔试还是机考

International English Language Testing System (IELTS) 雅思是全球最受欢迎的国际英语测试之一&#xff0c;为升学、就业、移居海外打开机会&#xff0c;去年报考 雅思的人数高达 350 万人次。 雅思拥有良好的国际声誉&#xff0c;获全球超过 150 个国家、12,000 多所机构认…

SQL第11课——使用子查询

11.1 子查询 查询&#xff08;query): 任何SQL语句都是查询&#xff0c;但此术语一般指select语句。 select语句是SQL的查询&#xff0c;迄今为止所有的select语句都是简单查询&#xff0c;即从单个数据库表中检索数据的单条语句。 SQL还允许创建子查询&#xff08;subquer…

nginx+php+postgresql搭建漏洞靶场

经过我多番查找,最终得出一个结论,dvwa暂时不支持 postgresql 本文给大家提供一个思路,千万不要轻易模仿 更新系统包列表 首先,打开终端并更新你的系统包列表: sudo apt updatesudo apt upgrade -y安装必要的软件包 安装Nginx、PHP、PostgreSQL以及一些必要的PHP扩展:…

抓取网页重定向之前的接口请求

使用谷歌浏览器&#xff0c;按下F12抓取接口的时候&#xff0c;会遇到无法抓取web页面重定向之前的地址的问题&#xff0c;这个时候可以使用以下两种方式进行抓取&#xff1a; 1.断网操作&#xff0c;选择开发者调试工具下面的&#xff0c;网络离线功能进行离线操作 2.使用保留…

Chromium 屏蔽“缺少 Google API 密钥,因此 Chromium 的部分功能将无法使用。”提示 c++

新编译的Chromium工程默认gn参数如下: 可以利用gn args --list out/debug >1.txt 导出默认参数 google_api_key Current value (from the default) "" From //google_apis/BUILD.gn:43 Set these to bake the specified API keys and OAuth client …

NR不同小区带宽的RB数

1. FR1 下表为FR1中不同小区带宽对应的最大RB数量。 SCS (kHz) 5 MHz 10 MHz 15 MHz 20 MHz 25 MHz 30 MHz 40 MHz 50 MHz 60 MHz 70 MHz 80 MHz 90 MHz 100 MHz 15 25 52 79 106 133 160 216 270 N/A N/A N/A N/A N/A 30 11 24 38 51 6…

登录功能开发 P167重点

会话技术&#xff1a; cookie jwt令牌会话技术&#xff1a; jwt生成&#xff1a; Claims&#xff1a;jwt中的第二部分 过滤器&#xff1a; 拦截器&#xff1a; 前端无法识别controller方法&#xff0c;因此存在Dispa什么的

仿真设计|基于51单片机的双机通信控制数码管显示

目录 具体实现功能 设计介绍 51单片机简介 资料内容 仿真实现&#xff08;protues8.7&#xff09; 程序&#xff08;Keil5&#xff09; 全部内容 资料获取 具体实现功能 &#xff08;1&#xff09;双机通信系统分为通讯发送端和通讯接收端。 &#xff08;2&#xff09;…

5G上的时敏网络:带有IEEE 802.1Qbv流量的混合5G和TSN系统的实验评估

论文标题&#xff1a;Time-Sensitive Networking over 5G: Experimental Evaluation of a Hybrid 5G and TSN System with IEEE 802.1Qbv Traffic 作者信息&#xff1a;Adnan Aijaz 和 Sajida Gufran&#xff0c;来自英国布里斯托尔的Toshiba Europe Ltd.的Bristol Research a…

Vue 技术进阶 day2 数据监视的原理、其他内置指令、自定义指令、生命周期、组件化、VueComponent构造函数

目录 1.Vue监测数据的原理 1.1 原理 1.1.1 数据劫持 1.1.2 观察者模式(Vue内部的实现) 1.1.3 更新组件 1.1.4 计算属性和侦听器 1.2 后添加属性做响应式&#xff08;Vue.set / vm.$set&#xff09; 1.3 对象和数组的响应式 1.4 数据监视案例 2.指令 2.1 内置指令 2.…

threejs三维可视化完全开源案例突破100个了

好激动呀&#xff0c;经过不断努力&#xff0c;三维开源案例&#xff0c;已经突破100个共享 赶快来逛逛吧&#xff01; 官网&#xff1a;https://threelab.cn/ 源码地址&#xff1a;https://github.com/AivoGenX/threelab-threejs-webgpu-vue-js

OkHttp 详细使用步骤,以及异步请求和同步请求

&#x1f604;作者简介&#xff1a; 小曾同学.com,一个致力于测试开发的博主⛽️&#xff0c;主要职责&#xff1a;测试开发、CI/CD 如果文章知识点有错误的地方&#xff0c;还请大家指正&#xff0c;让我们一起学习&#xff0c;一起进步。 &#x1f60a; 座右铭&#xff1a;不…

springboot+vue+elementui大文件分片上传

工具类方法&#xff1a; /*** 大文件分片上传* param fileName 文件名* param file 文件* param fileKey 文件key* param shardIndex 当前分片下标* param shardTotal 分片总量*/public static void bigUpload(String fileName,MultipartFile file, String fileKey, L…

【数据结构】MapSet

【概念】 Map和Set是一种专门用于搜索的数据结构&#xff0c;其搜索效率与具体实例化的子类数量有关&#xff0c;本质上是一颗二叉搜索树 搜索的关键数据为关键字“Key”&#xff0c;关键字对应的数据为值“Value”&#xff0c;将其称为“Key-Value键值对” 【关于Map】 Ma…

8 种渗透测试类型

渗透测试是对网络、硬件或软件系统进行有计划的攻击&#xff0c;目的是揭露可能破坏系统完整性并危及有价值数据的安全缺陷。虽然渗透测试的类型不同&#xff0c;但它们都旨在利用漏洞和弱点来测试现有安全措施的有效性。 渗透测试 不同类型的渗透测试取决于人们希望在特定系…