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掉了,不用再写一大堆的代码了。所以,在我点击该运行程序的×后,系统会根据这个树状的结构,释放掉整个结构的内存。

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

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

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

相关文章

在Node.js中使用MongoDB连接数据库、创建集合

本文主要介绍在Node.js中使用MongoDB连接数据库、创建集合的方法。 目录 连接数据库使用原生驱动程序连接MongoDB数据库使用Mongoose连接MongoDB数据库 创建集合使用mongodb驱动程序 连接数据库 在Node.js中使用MongoDB连接数据库有两种方式&#xff1a;使用原生驱动程序和使用…

静态HTTP应用的性能优化技巧

在Web开发中&#xff0c;静态HTTP应用以其简单、快速和安全的特点受到了广泛欢迎。然而&#xff0c;随着Web应用的规模不断扩大&#xff0c;性能问题也日益突出。本文将为你介绍一些静态HTTP应用的性能优化技巧&#xff0c;让你的应用飞得更快、更稳定。 一、压缩文件 文件压…

以pycharm为例,生成Python项目所需要的依赖库/包文档:requirements.txt

平时我们在编写或者使用别人的Python项目时&#xff0c;往往会看到一个文档requirements.txt&#xff0c;该文档是描述一个Python项目中的第三方库的名称以及版本。本文介绍导出python当前项目依赖包requirements.txt的操作步骤。 方法一&#xff1a;如果每个项目有对应的虚拟…

【C++】哈希表

文章目录 哈希概念哈希冲突哈希函数哈希表闭散列开散列 开散列与闭散列比较 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 点击跳转到网站。 哈希概念 顺…

CPython(将Python编译为so)

环境 先配一下环境&#xff0c;我使用的是python3.8.5 pip install Cython 编译过程 我们准备一个要编译的文件 test.py def xor(input_string): output_string "" for char in input_string: output_string chr(ord(char) ^ 0x66) return output_string…

Redis - 事务隔离机制

Redis 的事务的本质是 一组命令的批处理 。这组命令在执行过程中会被顺序地、一次性 全部执行完毕&#xff0c;只要没有出现语法错误&#xff0c;这组命令在执行期间是不会被中断。 当事务中的命令出现语法错误时&#xff0c;整个事务在 exec 执行时会被取消。 如果事务中的…

PyTorch深度学习实战(25)——自编码器

PyTorch深度学习实战&#xff08;25&#xff09;——自编码器 0. 前言1. 自编码器2. 使用 PyTorch 实现自编码器小结系列链接 0. 前言 自编码器 (Autoencoder) 是一种无监督学习的神经网络模型&#xff0c;用于数据的特征提取和降维&#xff0c;它由一个编码器 (Encoder) 和一…

20分钟部署ChatGLM3-6B

准备工作 1.下载源代码&#xff1a; https://github.com/THUDM/ChatGLM3 2.下载预训练模型&#xff1a; https://modelscope.cn/models/ZhipuAI/chatglm3-6b/files 可以创建一个py文件&#xff0c;直接使用如下代码下载到本地&#xff1a; from modelscope.hub.snapshot_dow…

python实现形态学建筑物指数MBI提取建筑物及数据获取

前言 形态学建筑物指数MBI通过建立建筑物的隐式特征和形态学算子之间的关系进行建筑物的提取[1]。 原理 上图源自[2]。 实验数据 简单找了一张小图片&#xff1a; test.jpg 代码 为了支持遥感图像&#xff0c;读写数据函数都是利用GDAL写的。 import numpy as np import …

LNMP网站架构分布式搭建部署

1. 数据库的编译安装 1. 安装软件包 2. 安装所需要环境依赖包 3. 解压缩到软件解压缩目录&#xff0c;使用cmake进行编译安装以及模块选项配置&#xff08;预计等待20分钟左右&#xff09;&#xff0c;再编译及安装 4. 创建mysql用户 5. 修改mysql配置文件&#xff0c;删除…

时间序列预测 — BiLSTM实现多变量多步光伏预测(Tensorflow)

目录 1 数据处理 1.1 导入库文件 1.2 导入数据集 1.3 缺失值分析 2 构造训练数据 3 模型训练 3.1 BiLSTM网络 3.2 模型训练 4 模型预测 1 数据处理 1.1 导入库文件 import time import datetime import pandas as pd import numpy as np import matplotlib.pyplot…

触发器和函数:让代码更接近数据

来源&#xff1a;艾特保IT 虹科干货丨触发器和函数&#xff1a;让代码更接近数据 原文链接&#xff1a;虹科干货 | 触发器和函数&#xff1a;让代码更接近数据 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; 文章速览&#xff1a; 触发器和函数的基础知识 编写语言…

AI创新之美:AIGC探讨2024年春晚吉祥物龙辰辰的AI绘画之独特观点

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《粉丝福利》 《linux深造日志》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引言一、龙辰辰事件概述二、为什么龙辰辰会被质疑AI创作&#xff1f;1.1 AI 作画的特点2.2 关于建行的合作宣传图…

都是星光赶路人

不知不觉已经快工作五年了&#xff0c;工作以后就感觉时间一年比一年快&#xff0c;仿佛昨天才刚毕业&#xff0c;就像陈鸿宇歌中的那样&#xff0c;多少遗憾自负存念想&#xff0c;唯有时间不可挡。五年&#xff0c;思考了很多&#xff0c;也想明白了许多。正好借着年末&#…

Angular+Nginx区域HIS医院信息管理系统源码

医院管理信息系统&#xff08;HIS&#xff09;是医院基本、重要的管理系统&#xff0c;是医院大数据的基础。“云”指系统采用云计算的技术和建设模式&#xff0c;具有可扩展、易共享、区域化、易协同、低成本、易维护、体验好的优势。“H”是医疗卫生&#xff0c;由原来医院 (…

利用transition-group标签包裹li标签,实现输入数据后按Enter键将数据添加到列表中

1.效果图 2.代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title></title><script src"https://cdn.bootcdn.net/ajax/libs/vue/2.3.0/vue.js"></script><div id&quo…

CLEAR MOT评估指标

错误正样本&#xff08;False Positive&#xff0c;FP&#xff09;&#xff1a;整个视频中被预测为正的负样本数。 错误负样本&#xff08;False Negatives&#xff0c;FN&#xff09;&#xff1a;整个视频中被预测为负的正样本数。 IDs&#xff1a;跟踪过程中目标ID切换总数。…

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

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

【送书活动】探究AIGC、AGI、GPT和人工智能大模型

文章目录 前言01 《ChatGPT 驱动软件开发》推荐语 02 《ChatGPT原理与实战》推荐语 03 《神经网络与深度学习》推荐语 04 《AIGC重塑教育》推荐语 05 《通用人工智能》推荐语 后记赠书活动 前言 人工智能技术在过去几年中发展迅猛&#xff0c;得益于大数据、云计算、深度学习等…

C++1114新标准——统一初始化(Uniform Initialization)、Initializer_list(初始化列表)、explicit

系列文章目录 C11&14新标准——Variadic templates&#xff08;数量不定的模板参数&#xff09; C11&14新标准——Uniform Initialization&#xff08;统一初始化&#xff09;、Initializer_list&#xff08;初始化列表&#xff09;、explicit 文章目录 系列文章目录1…