QT 基础篇

目录

QPushButton

QT帮助文档

QT 对象树


QPushButton

QPushButton是Qt图形界面控件中的一种,看英文的意思,他就是按钮,是最基本的图形控件之一。在我们的最基本的项目中,运行:

是一个空白的窗体,里面什么也没有,那么我们如何添加一个按钮呢,我们从最基本的代码添加按钮开始:

  1. 要使用QPushButton控件必须先包含: #include <QPushButton>头文件
  2. new 一个QPushButton对象
  3. 设置该对象的父类为this。若不设置父类,就是个孤儿,按钮就是独立显示的,而不再上面的方框里,显然不是我们想要的结果,所以我们代码新建的控件.要设置所属。

运行程序

设置按钮参数

可以看到在左上角,有一个小小的按钮,但按钮里面什么也没,我们可以对这个按钮进行设置,比如调用setText函数就是设置按钮的名字

但在代码提示中,需要一个QString的对象。这个我们还没学。我们可以直接使用双引号括起来的字符串,系统会自己强制的转换成QString对象。如: btn->setText(“英雄联盟");

可以看到整个按钮上就有了"英雄联盟"的字样。但感觉按钮太小,字很紧凑。

再对按钮进行调整,

btn->resize(80,30);//设置按钮的大小为宽80,高30

btn->move(180,150);//以左上角为原点,右为x正方向移动180个像素,下为y正方向移动150个像素

运行如图:

通过UI文件创建按钮,首先找到项目的ui文件

首先找到点开项目>找到Forms>mywidget.ui,就是我们需要的ui文件,双击打开。并确定我们选择的是ui编辑的设计模式。

这是左边是预览框,可以看到我们程序运行起来的样子。

鼠标左键单击拖动到左侧图形界面,松手,就会在界面上创建一个按钮,

创建的按钮边上还有8个小点,可以对按钮的大小进行可视化的调整。也可以鼠标拖动到你需要的地方松手即可。

在图形界面对按钮的修改非常的方便,即所改就能见所得。在右下角黄色的背景区域是属性设置框,在其中修改的数据,在可视化界面中,立即就可看到修改后的效果。

介绍一些比较常用的参数:

  • ObjectName:对象名,这个是在属性框中是不可以修改的。但可以右击按钮>修改对象名称
  • Enbled:是否启用该按钮,如果不启用,那么运行,整个按钮就是个灰色的,处于不可点击的样子。
  • Geometry:几何参数,(170,230)是位置坐标,80x20是按钮的大小Palette :颜色参数,这里直接继承父类的颜色。
  • Font :字体参数
  • Cursor:光标﹐是指鼠标移动到该按钮上的光标样式。这里依然是箭头

Text是按钮的文本显示

lcon按钮的图标,按钮可以内嵌图标,目前我们先介绍这些,可以对这些参数进行修改,运行后可观察他们的变化。

如我在属性框中修改了,按钮的文本显示为"德玛西亚",cursor修改为十字架,运行查看效果。

QT帮助文档

点击系统开始输入: assistant会看到

可以右击>打开文件位置

将整个文件复制到桌面上,便于以后打开使用。双击打开

我们可以通过帮助文档,学习Qt,助手中有所有类、控件,方法的介绍,对我们学习Qt,查询方法使用,有很大的帮助。如:我们搜索上节课我们学习过的QPushButton类,我们来看看帮助文档里有什么?

首先告诉你QPushButton是一个按钮。

Header:#include <QPushButton>告诉你在使用之前,必须包含该头文件。

qmake:QT+= widgets在编译的时候,在pro文件中必须加入widgets模块,但这个是基础模块,默认加入的,但若我们需要学习tcp网络的时候,需要使用QTcpSocket类,那么就还需要在.pro文件中添加network模块不然是无法使用网络的。

Inherits:QAbstractButton这个是告诉你该类是继承了QAbstractButton类的。也就是它的父类。它的爸爸。哈哈!我们还可以点击进去,继续查看该类的基本情况。

Inherited By:QCommandLinkButton这个是意思谁继承它,也就是他的儿子,这里我们不怎么需要知道他儿子是谁。

除了这些继承关系,还有一些该类的公开的、保护的,私有的一些方法。对我们写程序的话,这些类为我们提供了丰富的接口。

QT 对象树

Qt中的QObject会用对象树来组织管理自己,那什么是对象树?

这个概念非常好理解。因为QObject类就有一个私有变量QList<QObject *>,专门存储这个类的子孙后代们。比如创建一个QObject并指定父对象时,就会把自己加入到父对象的children()列表中,也就是QList<QObject *>变量中。

在我们的代码中可以看出,我们每new一个对象,都会给他指定一个父亲,而这个mywidget这个窗体,在构造的收也都要指定一个父亲,就是QWidget。所以这里面的关系就是QWidget是 myWidget的父亲, myWidget又是 btn的父亲。

使用对象树模式的好处是什么?

好处就是:当父对象被析构时子对象也会被析构。从一定程度上讲,简化了内存回收机制。举个例子,有一个窗口 Window,里面有 Label标签、TextEdit文本输入框、Button按钮这三个元素,并且都设置Window为它们的父对象。这时候我做了一个关闭窗口的操作,作为程序员的你是不是自然想到将所有和窗口相关的对象析构啊?古老的办法就是一个个手动delete 呗。是不是很麻烦?Qt运用对象树模式,当父对象被析构时,子对象自动就delete掉了,不用再写一大堆的代码了。所以,在我点击该运行程序的×后,系统会根据这个树状的结构,释放掉整个结构的内存。

对象树的问题:如果子对象,由于系统机制,会自动释放那么可能存在一个问题,子对象被二次释放导致崩溃

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

亚马逊云科技:向量数据存储在生成式人工智能应用程序中的作用

生成式人工智能深受大众喜爱&#xff0c;并且由于具备回答问题、写故事、创作艺术品甚至生成代码的功能&#xff0c;推动了行业的转变&#xff0c;那么如何才能在自己的企业中充分地利用生成式人工智能等应运而生问题。许多客户已经积累了大量特定领域的数据&#xff08;财务记…

设计模式—观察者模式

观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;使得当一个对象的状态发生变化时&#xff0c;所有依赖于它的对象都会得到通知并自动更新。 在观察者模式中&#xff0c;有两个核心角色&#xf…

智能优化算法应用:基于布谷鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于布谷鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于布谷鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.布谷鸟算法4.实验参数设定5.算法结果6.参考文…

go-libp2p-example-chat学习

1.案例下载 https://github.com/libp2p/go-libp2p/tree/master/examples 2.chat案例 这段代码是一个简单的基于libp2p的P2P聊天应用程序的示例。它允许两个节点通过P2P连接进行聊天。前提是&#xff1a; 两者都有私有IP地址&#xff08;同一网络&#xff09;。至少其中一个…

1.了解数据结构和算法

1.了解数据结构和算法 1.1 二分查找 二分查找&#xff08;Binary Search&#xff09;是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两半&#xff0c;然后比较目标值与中间元素的大小关系&#xff0c;从而确定应该在左半部分还是右半部分继续查找。这个…

java系列-HashMap遍历

1.遍历例子 import java.util.HashMap; import java.util.Iterator; import java.util.Map;public class HashMapTraversalExample {public static void main(String[] args) {HashMap<String, Integer> hashMap new HashMap<>();hashMap.put("A", 1);…

解决:WARNING: Ignoring invalid distribution -ip (d:\python37\lib\site-packages)

解决&#xff1a;WARNING: Ignoring invalid distribution -ip (d:\python37\lib\site-packages) 文章目录 解决&#xff1a;WARNING: Ignoring invalid distribution -ip (d:\python37\lib\site-packages)背景报错问题报错翻译报错位置代码报错原因解决方法今天的分享就到此结…

kafka配置多个消费者groupid kafka多个消费者消费同一个partition(java)

目录 1- 单播模式&#xff0c;只有一个消费者组2- 广播模式&#xff0c;多个消费者组3- Java实践 kafka是由Apache软件基金会开发的一个开源流处理平台。kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者在网站中的所有动作流数据。 kafka中partition…

光学遥感显著目标检测初探笔记总结

目录 观看地址介绍什么是显著性目标检测根据不同的输入会有不同的变体(显著性目标检测家族)目前这个领域的挑战 技术方案论文1(2019)论文2(2021)论文3(2022) 未来展望 观看地址 b站链接 介绍 什么是显著性目标检测 一张图片里最吸引注意力的部分就是显著性物体&#xff0c;…

【Stable Diffusion】在windows环境下部署并使用Stable Diffusion Web UI---By Conda

文章目录 一、Stable Diffusion介绍二、本地部署stable diffusion2.1 安装所需依赖环境2.1.1 安装CUDA2.1.2 安装显卡驱动2.1.3 安装Conda2.1.4 安装git工具--gitForWindows2.1.5 检查环境 2.2 配置Transformer环境变量2.3 安装SD WebUI2.4 安装SD WebUI过程中遇到的问题 三、 …

指针浅谈(三)

在指针浅谈(二)http://t.csdnimg.cn/SKAkD中我们讲到了const修饰指针、指针运算、野指针、assert断言和传址调用的内容&#xff0c;今天我们继续学习有关数组名、指针访问数组、一维数组传参的本质相关的内容&#xff0c;内容比较深入&#xff0c;如果觉得哪里讲解的不行&#…

Java EE 多线程之线程安全的集合类

文章目录 1. 多线程环境使用 ArrayList1. 1 Collections.synchronizedList(new ArrayList)1.2 CopyOnWriteArrayList 2. 多线程环境使用队列2.1 ArrayBlockingQueue2.2 LinkedBlockingQueue2.3 PriorityBlockingQueue2.4 TransferQueue 3. 多线程环境使用哈希表3.1 Hashtable3.…

QT----第三天,Visio stdio自定义封装控件

目录 第三天1 自定义控件封装 源码&#xff1a;CPP学习代码 第三天 1 自定义控件封装 新建一个QT widgetclass&#xff0c;同时生成ui,h,cpp文件 在smallWidget.ui里添加上你想要的控件并调试大小 回到mainwidget.ui&#xff0c;拖入一个widget&#xff08;因为我们封装的也…

jemeter,断言:响应断言、Json断言

一、响应断言 接口A请求正常返回值如下&#xff1a; {"status": 10013, "message": "user sign timeout"} 在该接口下创建【响应断言】元件&#xff0c;配置如下&#xff1a; 若断言成功&#xff0c;则查看结果树的接口显示绿色&#xff0c;若…

maui 开发音乐播放APP 优化(2)

界面改为&#xff1a; 音量可以调整 。同时当前状态 显示。以及播放音乐.视频有时可以自动播放有时候要手动。 界面代码 <?xml version"1.0" encoding"utf-8" ?> <ContentPage xmlns"http://schemas.microsoft.com/dotnet/2021/maui&quo…

MySQL的事务以及springboot中如何使用事务

事务的四大特性&#xff1a; 概念&#xff1a; 事务 是一组操作的集合&#xff0c;它是不可分割的工作单元。事务会把所有操作作为一个整体&#xff0c;一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 注意&#xff1a; 默认MySQ…

最新UI酒桌喝酒游戏小程序源码,直接上传源码到开发者端即可,带流量主

源码介绍&#xff1a; 2023最新UI酒桌喝酒游戏小程序源码 娱乐小程序源码 带流量主.修改增加了广告位&#xff0c;直接上传源码到开发者端即可。 通过后改广告代码&#xff0c;然后关闭广告展示提交&#xff0c;通过后打开即可。无广告引流。 流量主版本的&#xff08;配合流…

proteus元件合集(一)

LCD LM018L​​ 绿色的LCD寻找方法&#xff1a; 直流电压源 直流电压源寻找方法&#xff1a; 滑动变阻器 滑动变阻器寻找方法&#xff1a; 注意&#xff1a;它出来之后会自动出现那两个红色的。那是电源。

崩坏:星穹铁道【V1.5攻略】五星(金)-遗器主、副词条成长数值参考

星穹铁道中五星遗器词条成长数值攻略&#xff1a; 温馨提示&#xff1a;以下数据会可能会出现一点一点误差&#xff0c;见谅... --------------------------- 一、如图&#xff1a; ----->>细节补充<<----- ①实际数值可能与游戏中不一&#xff0c;若数据出现无法忽…

详解Java中的异常体系结构(throw,throws,try-catch,finally,自定义异常)

目录 一.异常的概念 二.异常的体系结构 三.异常的处理 异常处理思路 LBYL&#xff1a;Look Before You Leap EAFP: Its Easier to Ask Forgiveness than Permission 异常抛出throw 异常的捕获 提醒声明throws try-catch捕获处理 finally的作用 四.自定义异常类 一.异…