【Qt】:常用控件(一:概述和QWidget核心属性)

常用控件

  • 一.概述
  • 二.QWidget核心属性
    • 1.enabled(是否可用)
    • 2.geometry(设置坐标)
    • 3.WindTitle(窗口标题)
    • 4.windowIcon
      • 1.绝对路径
      • 2.qrc机制
    • 5.windowOpacity(透明度)

一.概述

Widget是Qt中的核⼼概念.英⽂原义是"⼩部件",我们此处也把它翻译为"控件".控件是构成⼀个图形化界⾯的基本要素。

在这里插入图片描述

像上述⽰例中的,按钮,列表视图,树形视图,单⾏输⼊框,多⾏输⼊框,滚动条,下拉框等,都可以称为"控件".

Qt作为⼀个成熟的GUI开发框架,内置了⼤量的常⽤控件.这⼀点在QtDesigner中就可以看到端倪.并且Qt也提供了"⾃定义控件"的能⼒,可以让程序猿在现有控件不能满⾜需求的时候,对现有控件做出扩展,或者⼿搓出新的控件.

在这里插入图片描述

二.QWidget核心属性

在Qt中,使⽤QWidget类表⽰"控件".像按钮,视图,输⼊框,滚动条等具体的控件类,都是继承⾃QWidget.可以说,QWidget中就包含了Qt整个控件体系中,通⽤的部分.

在Qt Designer中,随便拖⼀个控件过来,选中该控件,即可在右下⽅看到QWidget中的属性。

在这里插入图片描述

1.enabled(是否可用)

在这里插入图片描述

  1. 所谓"禁⽤"指的是该控件不能接收任何⽤⼾的输⼊事件,并且外观上往往是灰⾊的.
  2. 如果⼀个widget被禁⽤,则该widget的⼦元素也被禁⽤.

代码示例:设置一个禁用按钮

在这里插入图片描述

在这里插入图片描述

2.geometry(设置坐标)

位置和尺⼨.其实是四个属性的统称:

x 横坐标
y 纵坐标
width 宽度
height ⾼度

在这里插入图片描述

但是实际开发中,我们并不会直接使⽤这⼏个属性,⽽是通过⼀系列封装的⽅法来获取/修改:

对于Qt的坐标系,不要忘记是⼀个"左⼿坐标系".其中坐标系的原点是当前元素的⽗元素的左上⻆.

在这里插入图片描述

在这里插入图片描述

代码示例:控制按钮的位置

设置4个方向按钮,点击方向按钮来控制目标按钮的移动。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

但当前的代码只是改变了目标按钮左上角的位置,与此同时高度和宽度也发生了变化。实际上实现了按钮大小的变化,如果我们想要按钮进行平移呢?其实很简单,用第二个函数,保持高度,宽度不变。

在这里插入图片描述

在这里插入图片描述

windowframe的影响

如果widget作为⼀个窗⼝(带有标题栏,最⼩化,最⼤化,关闭按钮),那么在计算尺⼨和坐标的时候就有两种算法.包含windowframe和不包含windowframe.其中x(),y(),frameGeometry(),pos(),move()都是按照包含windowframe的⽅式来计算的.
其中geometry(),width(),height(),rect(),size()则是按照不包含windowframe的⽅式来计算的.
当然,如果⼀个不是作为窗⼝的widget,上述两类⽅式得到的结果是⼀致的

在这里插入图片描述

在这里插入图片描述

3.WindTitle(窗口标题)

在这里插入图片描述

注意!上述设置操作针对不同的widget可能会有不同的⾏为.如果是顶层widget(独⽴窗⼝),这个操作才会有效.如果是⼦widget,这个操作⽆任何效果.

代码是咧:设置窗口标题

在这里插入图片描述

4.windowIcon

在这里插入图片描述

1.绝对路径

在这里插入图片描述

同windowTitle,上述操作仅针对顶层widget有效.

注意:QIcon对象尽量在栈上创建。

  1. 之前推荐使用堆来创建对象,主要是因为要确保当前的控件的生命周期是足够的.要通过Qt对象树来释放对象.
  2. Qlcon自身是一个比较小的对象.创建出来之后,就是要设置到某个QWidget里面.Qlcon对象本身释放不释放,不影响图标最终的显示.
  3. Qlcon也不支持对象树.无法给他执行父对象.

在这里插入图片描述

注意:Windows下路径的分隔符可以使⽤ / 也可以使⽤ \ .但是如果在字符串中使⽤ \ ,需要写作转义字符的形式 \ .因此我们还是更推荐使⽤ / .

在这里插入图片描述

可以看到我们使用的是绝对路径,这是很不好的,接下来把它改成相对路径。

那么路径=基准路径+相对路径。

假设基准路径为D盘,相对路径./image/rose.jpg。那么就先在D盘里找到image目录,再找到对应图片。

2.qrc机制

但实际上如果用户把该图片删除了,怎么办呢?对此Qt提供了一种更好的方式—qrc机制。

在这里插入图片描述

在这里插入图片描述

1.创建一个.drc文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.把图片导入qrc文件

先创建一个“前缀”。所谓的“前缀"可以理解成虚拟的目录。这个目录没有在你的电脑上真实存在,是Qt自己抽象出来的。qrc机制本质上就是把图片的二进制数据,转成C++代码.(最终就会在代码中看到很大的char数组,里面就是图片的二进制数据)。为了方便Qt代码中访问到这个图片,Qt就自己抽象出了虚拟的目录~~

在这里插入图片描述

在这里插入图片描述

接着就可以导入图片了。但是注意导入图片的时候,需要确保你导入的图片必须在resource.qrc 文件的同级目录,或者同级目录中的子目录里。也就是必须在点开的目录或者其子目录里。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5.windowOpacity(透明度)

在这里插入图片描述

代码⽰例:调整窗⼝透明度

创建两个按钮,一个按钮增加透明度,一个按钮减少透明度。

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Spring源码解析-容器基本实现

spring源码解析 整体架构 defaultListableBeanFactory xmlBeanDefinitionReader 创建XmlBeanFactory 对资源文件进行加载–Resource 利用LoadBeandefinitions(resource)方法加载配置中的bean loadBeandefinitions加载步骤 doLoadBeanDefinition xml配置模式 validationMode 获…

SpringCloud学习(9)-GateWay网关-自定义拦截器

GateWay Filter详细配置说明 gateway Filter官网:Spring Cloud Gateway 作用: 请求鉴权异常处理记录接口调用时长统计 过滤器类别 全局默认过滤器:官网:Spring Cloud Gateway,出厂默认已有的,直接用,作…

【详细讲解0基础如何进入IT行业】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

Deep Image Prior

自监督的开创性工作 从简单分布到复杂分布的映射,本质上是将重建限制到某一流形,在流形上通过观测图像的数据保真项作为监督。 称之为先验也是很准确,流形就是先验。 这个扰动也很关键,本质上一个平滑正则项。直观理解是各种扰动…

Redis从入门到精通(四)Redis实战(一)短信登录

文章目录 前言第4章 Redis实战4.1 短信登录4.1.1 基于session实现短信登录4.1.1.1 短信登录逻辑梳理4.1.1.2 创建测试项目4.1.1.3 实现发送短信验证码功能4.1.1.4 实现用户登录功能4.1.1.5 实现登录拦截功能4.1.1.6 session共享问题 4.1.2 基于Redis实现短信登录4.1.2.1 Key-Va…

MATLAB - 用命令行设计 MPC 控制器

系列文章目录 前言 本例演示如何通过命令行创建和测试模型预测控制器。 一、定义工厂模型 本示例使用《使用 MPC Designer 设计控制器》中描述的工厂模型。创建工厂的状态空间模型,并设置一些可选的模型属性,如输入、状态和输出变量的名称和单位。 % co…

(阿里云万网)-域名注册购买实名流程

1,进入阿里云网万官网 输入网址 https://wanwang.aliyun.com/?spm5176.161059.J_3207526240.33.581fa505OGhzsW 注册域名 ,域名推荐com(国际顶级域名) ,cn(国内顶级域名)。其中cn价钱比com便…

状态机高阶讲解-16

2534 01:44:41,942 --> 01:44:44,140 那我们,你看这里 2535 01:44:45,170 --> 01:44:46,452 你看这里改之后 2536 01:44:46,452 --> 01:44:48,833 它代码就做新的调整了嘛 2537 01:44:48,833 --> 01:44:49,200 对吧 2538 01:44:50,150 --> 01:44…

smbms:超市订单管理系统(项目分析)

smbms:超市订单管理系统(项目分析) 文章目录 smbms:超市订单管理系统(项目分析)前言一、项目介绍:二、项目来源:三、架构图:(流程图)四、使用了什…

【论文阅读】CompletionFormer:深度完成与卷积和视觉变压器

【论文阅读】CompletionFormer:深度完成与卷积和视觉变压器 文章目录 【论文阅读】CompletionFormer:深度完成与卷积和视觉变压器一、介绍二、联系工作深度完成Vision Transformer 三、方法四、实验结果 CompletionFormer: Depth Completion with Convolutions and Vision Tran…

腾讯云添加域名后不生效

问题原因 添加域名后不生效可能是因为没有加CDN域名解析 解决步骤

手动实现Tomcat底层机制+自己设计Servlet

文章目录 1.Tomcat整体架构分析自己理解 2.第一阶段1.实现功能2.代码1.TomcatV1.java 3.调试阶段1.阻塞在readLine导致无法返回结果 4.结果演示 3.第二阶段1.实现功能2.代码1.RequestHander.java2.TomcatV2.java 3.调试阶段1.发现每次按回车会接受到两次请求 4.结果演示 4.第三…

【Python使用】嘿马头条完整开发md笔记第4篇:数据库,1 方案选择【附代码文档】

嘿马头条项目从到完整开发笔记总结完整教程(附代码资料)主要内容讲述:课程简介,ToutiaoWeb虚拟机使用说明1 产品介绍,2 原型图与UI图,3 技术架构,4 开发,1 需求,2 注意事项。数据库,理解ORM1 简介,2 安装,3 数据库连接…

C++要点细细梳理(下)(内存分配、异常处理、template和文件读写)

4. 类动态内存分配 4.1 C语言动态内存分配:malloc和free 4.2 C动态内存分配:new和delete 思考:定义一个对象和定义一个普通变量有何区别? 普通变量:分配足够空间即可存放数据对象:除了需要空间,还要构造/析构 类比:…

关于 VScode, 点击文件右键或者在文件夹中没有 【 在vscode中打开选项】 解决办法

关于 VScode, 点击文件右键或者在文件夹中没有 【 在vscode中打开选项】 解决办法 段子手-168 2024-4-6 1、在任意位置创建一个文本文件。如:a.txt 2、复制以下代码到 a.txt 文本文件中。 (注: 以 ; 开头的 , 是备注信息 , 不需要做任何修…

代码随想录第19天

654. 最大二叉树 已解答 中等 相关标签 相关企业 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀…

影院座位选择简易实现(uniapp)

界面展示 主要使用到uniap中的movable-area&#xff0c;和movable-view组件实现。 代码逻辑分析 1、使用movable-area和movea-view组件&#xff0c;用于座位展示 <div class"ui-seat__box"><movable-area class"ui-movableArea"><movab…

【QT学习】5.控件

一。控件的了解 1.控件作用 拖拽页面&#xff0c;所见即所得。 2.创建控件 3.向qt项目中添加资源 3.1显示图片 项目右键--》add new 创建结果&#xff1a; 添加资源到文件中 补充&#xff1a;使用代码的方式添加图片 3.2显示动图 1.添加动图资源 添加资源 2.显示动图 3.3显示…

基于单片机电子硬币储存器的设计

**单片机设计介绍&#xff0c;基于单片机电子硬币储存器的设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机电子硬币储存器的设计概要主要涵盖了硬件设计、软件设计、硬币识别、计数与储存等核心功能。以下是对该设…

OWASP TOP10 漏洞详解

前言 该内容是 OWASP TOP 10 的学习笔记&#xff0c;笔记内容来源 B 站龙哥的视频【12.Top漏洞10&#xff1a;服务器请求伪造_哔哩哔哩_bilibili】 一、访问控制崩溃 概念 未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据&#xf…