Qt:5.QWidget属性介绍(isEnabled和geometry)

目录

一、 QWidget属性的介绍:

二、Enabled属性:

2.1Enabled属性的介绍:

2.2获取控件当前可用状态的api——isEnabled():

2.3设置控件当前的可用状态的api—— setEnabled() :

2.4 实例:通过一个按钮,控制另一个按钮的可用状态:

三、 geometry属性:

3.1geometry属性的介绍:

3.2获取控件的geometry属性: 

3.3通过setRect方法,修改QRect对象的四个属性:

3.4单独设置QRect对象的四个属性:

 3.5通过setGeometry方法,修改控件的geometry属性:

3.6连续设置geometry属性:

3.7小项目练手:


一、 QWidget属性的介绍:

  • QWidget 是所有可视化组件的基类,几乎所有的GUI控件(如按钮、标签、窗口等)都继承自这个类。
  • 因此,QWidget 包含的属性和方法可以认为是通用的,它们可以被所有派生类使用。

二、Enabled属性:

2.1Enabled属性的介绍:

  • 在Qt中,控件(widget)的 Enabled 属性用于控制控件是否可用。启用的控件可以接受用户输入和交互,而禁用的控件则不能。
  • 启用或禁用控件通常用于在用户界面中根据特定条件或用户操作来动态调整界面的交互性。
  • 当父控件被禁用时,其所有子控件也会被禁用。这种行为称为级联启用状态。
  • 禁用控件后,控件通常会显示为灰色,以指示其不可用状态。Qt会自动处理这种样式变化,但也可以使用样式表(stylesheet)进一步自定义控件的外观。

2.2获取控件当前可用状态的api——isEnabled():

  • 使用 isEnabled() 方法。
  • 如果可用,返回true,不可以会返回false。
  • 比如使用拖拽方式创建一个按钮控件—pushButton_1,要想获取这个按钮的可用状态,代码可以写为:
ui->pushButton->isEnabled();

2.3设置控件当前的可用状态的api—— setEnabled() :

  • 使用setEnabled()方法。
  • 比如使用拖拽方式创建一个按钮控件—pushButton_1,要想修改这个按钮的可用状态,代码可以写为:
ui->pushButton->setEnabled(true/false);

2.4 实例:通过一个按钮,控制另一个按钮的可用状态:

        

  • 使用自动建立信号和槽的方法。创建两个控件的槽函数。
  • change控件的槽函数,可以通过以下代码获取到test的可以状态。
  • 如果test的状态为true,点击change就可将test状态修改为false;如果test的状态为false,点击change就可将test状态修改为true;
void Widget::on_pushButton_change_clicked()
{
    if(ui->pushButton->isEnabled())
        ui->pushButton->setEnabled(false);
    else
        ui->pushButton->setEnabled(true);
}

三、 geometry属性:

3.1geometry属性的介绍:

  • geometry 属性是 Qt 中的 QWidget 提供的一种方法,用于获取和设置控件的矩形区域。这个矩形区域定义了控件在其父控件中的位置和大小。
  • 它包含四个值:
  • x: 相对于父控件,从父控件的左上角向右延申。
  • y: 相对于父控件,从父控件的左上角向下延申。
  • width: 控件的宽度。
  • height: 控件的高度。

3.2获取控件的geometry属性: 

  • 通过定义一个QRect对象geom,来获取控件button的四个属性:
QRect geom = button->geometry();
int x = geom.x();
int y = geom.y();
int width = geom.width();
int height = geom.height();
  • 直接获取button的四个属性:
int x = button->geometry()->x();
int y = button->geometry()->y();
int width = button->geometry()->width();
int height = button->geometry()->height();

3.3通过setRect方法,修改QRect对象的四个属性:

 

geom.setRect(x,y,width,height);

3.4单独设置QRect对象的四个属性:

geom.setX(x);
geom.setY(y);
geom.setWidth(w);
geom.setHeight(h);
  • 需要注意的是,setX和setY都只是修改右上角的哪个角,其他的角不会被印象。

 3.5通过setGeometry方法,修改控件的geometry属性:

  • 传递QRect对象,来修改geometry属性。
button->setGeometry(geom);
  • 直接设置geometry属性:
button->setGeometry(x,y,width,height);

3.6连续设置geometry属性:

  • 如果连续设置控件的geometry属性,ui界面不会显示控件中途属性的样式,只会显示最终属性的样式。
  • 如果想要看到中途属性的样式,可以使用QApplication::processEvents();来刷新ui界面,并且添加一些延时QThread::sleep(1);来停顿后观察。

3.7小项目练手:

  • 通过两个按钮,更改一个label的文字展示,并且在点击第二个按钮时,让第二个按钮切换位置。
  • 首先拖拽出一个label控件和两个pushbutton控件,并设置好初始文本。

        

  • 然后为第一个pushbutton设置槽函数,直接右键转到槽函数,完成槽函数的定义。
void Widget::on_pushButton_clicked()
{
    ui->label->setText("真棒,加油!!!");
}
  • 然后完成第二个pushbutton的槽函数。
void Widget::on_pushButton_2_clicked()
{
    int x=this->geometry().x();
    int y=this->geometry().y();
    ui->pushButton_2->move(rand()%x,rand()%y);
    ui->label->setText("重新考虑一下吧~~~");
}

void Widget::on_pushButton_2_pressed()
{
    int x=this->geometry().x();
    int y=this->geometry().y();
    ui->pushButton_2->move(rand()%x,rand()%y);
    ui->label->setText("重新考虑一下吧~~~");
}
  • 实现了两个槽函数,一个对应点击之后,一个对应点击。
  • 其中的x和y是获取widget的长和宽,然后使用rand模长和宽,就能在widget的范围内生成一个随机的x和y。

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

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

相关文章

【人工智能学习之图像操作(六)】

【人工智能学习之图像操作(六)】 Hough变换直线检测圆检测 图像分割 Hough变换 在图像处理中,霍夫变换用来检测任意能够用数学公式表达的形状,即使这个形状被破坏或者有点扭曲 直线检测 import cv2 import numpy as np image …

Python 基础:用 json 模块存储和读取数据

目录 一、用 json 存储数据二、用 json 读取数据 遇到看不明白的地方,欢迎在评论中留言呐,一起讨论,一起进步! 本文参考:《Python编程:从入门到实践(第2版)》 用户关闭程序时&#…

Redux实现Token持久化

业务背景: Token数据具有一定的时效时间,通常在几个小时,有效时间内无需重新获取,而基于Redux的存储方式又是基于内存的,刷新就会丢失,为了保持持久化,我们需要单独做处理 解决方案: 使用redu…

HTML图片链接缓存问题解决

关于解决HTML使用图片链接出现的缓存问题处理 1、项目上明明替换了图片却没发现更新,得去浏览器设置清除浏览器缓存或者其它一些操作才能解决,这也太麻烦了!加载过一次不会再加载第二次,其实这时候就存在浏览器图片缓存情况&…

1-5题查询 - 高频 SQL 50 题基础版

目录 1. 相关知识点2. 例题2.1.可回收且低脂的产品2.2.寻找用户推荐人2.3.大的国家2.4. 文章浏览 I2.5. 无效的推文 1. 相关知识点 sql判断,不包含null,判断不出来distinct是通过查询的结果来去除重复记录ASC升序计算字符长度 CHAR_LENGTH() 或 LENGTH(…

cpu,缓存,辅存,主存之间的关系及特点

关系图 示意图: ------------------- | CPU | | ------------- | | | 寄存器 | | | ------------- | | | L1缓存 | | | ------------- | | | L2缓存 | | | ------------- | | | L3缓存 | | | ------------- | ----…

2095.删除链表的中间节点

给你一个链表的头节点 head 。删除链表的中间节点 ,并返回修改后的链表的头节点 head。 长度为 n 链表的中间节点是从头数起第 ⌊n / 2⌋ 个节点(下标从 0 开始),其中 ⌊x⌋ 表示小于或等于 x 的最大整数。 对于 n 1、2、3、4 和…

深入理解 Spring MVC:原理与架构解析

文章目录 前言一、MVC二、Spring MVC三、Spring MVC 工作流程四、小结推荐阅读 前言 Spring MVC 是一种基于 Java 的 Web 应用开发框架,它通过模型-视图-控制器(Model-View-Controller, MVC)的设计模式来组织和管理 Web 应用程序。本文将深入…

树莓派3B读写EEPROM芯片AT24C256

AT24C256是一个Atmel公司的EEPROM存储芯片,容量是256K个bit(也就是32K字节),I2C接口,而树莓派正好有I2C接口,如下图蓝框中的4个IO口, 把AT24C256和这4个口接在一起,这样硬件就准备好…

Nginx的11个执行阶段

Nginx的11个执行阶段

ARCGIS添加在线地图

地图服务地址:http://map.geoq.cn/ArcGIS/rest/services 具体方法: 结果展示:

Spring底层原理之bean的加载方式八 BeanDefinitionRegistryPostProcessor注解

BeanDefinitionRegistryPostProcessor注解 这种方式和第七种比较像 要实现两个方法 第一个方法是实现工厂 第二个方法叫后处理bean注册 package com.bigdata1421.bean;import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.…

轻量级仿 SpringBoot 程序

但凡 Java 程序,想必就是 Spring 程序;但凡 Spring 程序,想必就是 SpringBoot 程序——且慢,当今尚有不是 SpringBoot 即 SpringMVC 的程序不?有——老旧的遗留系统不就是嘛~——不,其实只要稍加“调教”&a…

基于SpringBoot漫画网站系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,…

目前常见的几款企业级im即时通讯软件有哪些?

在目前的市场上,有几款常见的企业级即时通讯软件广受企业青睐。以下是其中几款主流企业级即时通讯软件的介绍和特点。 1. 微软Teams 微软Teams是一款集即时通讯、协作和视频会议功能于一体的企业级通讯软件。它提供了实时聊天、语音通话、视频会议、文件共享和团队…

零刻SER8 8845HS设置RAID磁盘阵列教程

SER8内置两个NVme硬盘位,支持硬盘RAID功能,目前支持以下几种RAID模式。 Volume(卷):将多块硬盘拼接成一个大硬盘,也称为JBOD(Just a Bunch Of Disks)。它不要求硬盘容量相同&#xf…

软件构造 | 期末查缺补漏

软件构造 | 期末查缺补漏 总体观 软件构造的三维度八度图是由软件工程师Steve McConnell提出的概念,用于描述软件构建过程中的三个关键维度和八个要素。这些维度和要素可以帮助软件开发团队全面考虑软件构建的方方面面,从而提高软件质量和开发效率。 下…

What does the error ‘module ‘langchain‘ has no attribute ‘verbose‘ refer to?

题意:错误 module langchain has no attribute verbose 指的是什么意思? 问题背景: Kind of new to Langchain/Qdrant but Im building a recommendation engine to recommend users based on the contents of their associated PDF files, …

学习阳明心学,需要下真功夫,持续用功

阳明心学是功夫之学,看到善的就发扬光大,看到恶的就立即改正,这才是真功夫

LeetCode 算法:二叉搜索树中第K小的元素 c++

原题链接🔗:二叉搜索树中第K小的元素 难度:中等⭐️⭐️ 题目 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从1开始计数)。 示例 1:…