【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(透明度)

在这里插入图片描述

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

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

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

关于三级树形分类的解释(谷粒商城)

在学谷粒商城的时候,老师并没有给三级树形分类这块讲清楚,导致在拖拽这块很多人都有疑问,在仔细琢磨下,看了这篇文章,只要明白这两个点,那就能理解了。 层级和深度的关系: 第一级节点的层级是 0…

基于巴法云物联网云平台构建可视化控制网页(以控制LED为例)

0 前言 如今大大小小的物联网云平台非常多,但大部分要收取费用,免费的物联网云平台功能则有很多限制使用起来非常不方便。以百度云物联网云平台为例,它的物可视不支持发布主题,等于可视化界面只能作为数据监控而不具备双向通信的…

mysql dublewrite 双写缓存机制

mysql dublewrite 双写缓存机制,像不像主板双bois系统, 在MySQL的InnoDB存储引擎中,当进行数据写操作时,会先将数据写入到内存中的缓冲池(Buffer Pool),然后异步刷新到磁盘上的数据文件。为了提…

大揭秘!产品经理待遇和发展前景

很多互联网从业人员都对产品经理不太了解,或者说不知道其发展前景到底如何?值不值得转岗或者从0开始进入学习,那么接下来我们来看看产品经理的发展前景到底如何呢? 产品经理就业现状 随着互联网行业的迅猛发展,产品经…

ElasticSearch 常用查询优化方式

设计阶段调优 1: 根据业务增量需求,采取基于日期模板创建索引,通过 roll over API 滚动索引; 2: 使用别名进行索引管理; 3: 每天凌晨定时对索引做 force_merge 操作,以释放空间&…

手写一个民用Tomcat (02)

01 我们已经完成了 基本玩具一样的Tomcat,可以实现这个功能,下面我们在规范一下。 先从我们的JxdResponse ,JxdRequest 分别实现ServletRequest ,和ServletResponse 注意下 没有用的到 重写方法我就 直接去掉了,你自…

摆动序列(力扣376)

文章目录 题目前知题解一、思路二、解题方法三、Code 总结 题目 Problem: 376. 摆动序列 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元…

c++20协程详解(四)

前言 到这就是协程的最后一节了。希望能帮到大家 代码 到这里我们整合下之前二、三节的代码 #include <coroutine> #include <functional> #include <chrono> #include <iostream> #include <thread> #include <mutex> #include <me…

JWT/JWS/JWE

JWT(JSON Web Token)&#xff1a;一种基于JSON格式&#xff0c;用于在Web应用中安全传递用户身份验证和授权信息的标准令牌&#xff0c;可以包含签名(JWS)和加密(JWE)的信息 MacAlgorithm(Message Authentication Code Algorithm)&#xff1a;消息认证码算法 HMAC(Hash-based…

2024/4/1—力扣—两数相除

代码实现&#xff1a; 思路&#xff1a;用减法模拟除法 // 用减法模拟除法 int func(int a, int b) { // a、b均为负数int ans 0;while (a < b) { // a的绝对值大于等于b&#xff0c;表示此时a够减int t b;int count 1; // 用来计数被减的次数// t > INT_MIN / 2:防止…

力扣由浅至深 每日一题.23 Nim 游戏

不要美化自己当初没有选择的那一条路 —— 24.4.7 Nim 游戏 你和你的朋友&#xff0c;两个人一起玩 Nim 游戏&#xff1a; 桌子上有一堆石头。你们轮流进行自己的回合&#xff0c; 你作为先手 。每一回合&#xff0c;轮到的人拿掉 1 - 3 块石头。拿掉最后一块石头的人就是获胜者…

京东获得JD商品详情 API 接口(jd.item_get)的详细使用说明,包括如何通过该接口获取商品的基本信息,包括名称、品牌、产地、规格参数等

通过调用京东商品详情API接口&#xff0c;开发者可以获取商品的基本信息&#xff0c;如名称、品牌、产地、规格参数等。此外&#xff0c;还可以获取商品价格信息&#xff0c;包括原价、促销价和活动信息等。同时&#xff0c;该接口还支持获取商品的销量、评价、图片、描述等详细…

IO学习笔记

1 什么是IO 对于任何程序设计语言而言&#xff0c;输入输出(Input/Output)系统都是非常核心的功能。程序运行需要数据&#xff0c;数据的获取往往需要跟外部系统进行通信&#xff0c;外部系统可能是文件、数据库、其他程序、网络、IO设备等等。外部系统比较复杂多变&#xff0…

微信如何识别图片中的文字?3个文字识别技巧分享

微信如何识别图片中的文字&#xff1f;微信识别图片中的文字是一项非常实用的功能&#xff0c;特别是在需要快速提取图片中的信息时。不仅如此&#xff0c;微信识别图片文字的功能也极大地提升了人们的工作和学习效率。在办公场景中&#xff0c;它可以快速将纸质文档、名片、合…

postgresql数据库|数据整合的好工具--Oracle-fdw的部署和使用

概述 Oracle_fdw 是一种postgresql外部表插件&#xff0c;可以读取到Oracle上面的数据。是一种非常方便且常见的pg与Oracle的同步数据的方法 Oracle_fdw 适用场景&#xff1a; Oracle_fdw 是一个开源的 Foreign Data Wrapper (FDW)&#xff0c;主要用于在 PostgreSQL 数据库中…

【PRO3.0 】电子面单模版请求失败问题处理

注意&#xff1a;&#xff1a;改完重启守护进程 1、文件地址&#xff1a;crmeb/services/express/storage/Express.php 行数 202 行左右&#xff0c; 方法名&#xff1a;temp() 如下如图把 POST 改成 GET 2、crmeb/services/HttpService.php 行数&#xff1a;81 行左右 方…

【MySQL】解决修改密码时报错:--skip-grant-tables option

首先我们先了解到为何会出现如上报错&#xff1a; 是因为我们在第一次配置MySQL中的my.cnf时&#xff0c;我们添加了–skip–grant-tables 选项 跳过验证身份的选项 所以&#xff0c;我们第一次登录成功后想要修改密码会出现如下报错&#xff1a; [hxiZ0jl69kyvg0h181cozuf5Z…

Vue3:自定义响应式数据-customRef(面试常问,重点!!!)

一、情景说明 我们知道&#xff0c;Vue的响应式数据效果就是&#xff0c;页面和变量的关联效果 页面一修改变量值&#xff0c;引用变量的地方就会同时更新 那么&#xff0c;假设我们有这样一个需求&#xff0c;就是&#xff0c;让响应式变量在页面修改后&#xff0c;过2秒&am…

使用Springfox Swagger实现API自动生成单元测试

目录 第一步&#xff1a;在pom.xml中添加依赖 第二步&#xff1a;加入以下代码&#xff0c;并作出适当修改 第三步&#xff1a;在application.yaml中添加 第四步&#xff1a;添加注解 第五步&#xff1a;运行成功之后&#xff0c;访问相应网址 另外&#xff1a;还可以导出…

UI自动化框架搭建以及面试题详解(上)

UI自动化框架搭建以及面试题 UI自动化面试题框架面试题那你讲下如何搭建现成的框架公司里面的框架是你搭建的么请结合你的项目讲解一下你的框架是如何搭建的 PO模式什么是 PO 模式PO 模式的封装原则有哪些 DDT驱动模式什么的项目适合ddt ddt四种模式ddt处理各种类型数据 自动化…