Qt:5.QWidget属性介绍(Enabled属性-控件可用性设置、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);elseui->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。

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

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

相关文章

Rhino 犀牛三维建模工具下载安装,Rhino适用于机械设计广泛领域

Rhinoceros,这款软件小巧而强大,无论是机械设计、科学工业还是三维动画等多元化领域,它都能展现出其惊人的建模能力。 Rhinoceros所包含的NURBS建模功能,堪称业界翘楚。NURBS,即非均匀有理B样条,是计算机图…

昇思25天学习打卡营第6天|数据变换 Transforms

学习目标:熟练掌握数据变换操作 熟悉mindspore.dataset.transforms接口 实践掌握常用变换 昇思大模型平台学习心得记录: 一、关于mindspore.dataset.transforms 1.1 变换 mindspore.dataset.transforms.Compose将多个数据增强操作组合使用。 mindspo…

最靓丽的C++开源通知弹框SnoreToasts自动监听软件及网页通知

SnoreToasts,作为一款轻量级的C开源项目,为开发者提供了一个便捷的方式来在Windows操作系统上展示通知弹框(Toast Notifications)。 特点与优势 轻量级:SnoreToasts采用了简洁的代码设计,避免了不必要的依…

Zabbix 配置端口监控

Zabbix 端口监控简介 在Zabbix中配置端口监控,可以帮助你实时监控服务器或网络设备上的特定端口是否开放和可访问。Zabbix提供了多种方式来监控端口,主要包括简单的端口可用性检查和更复杂的服务监控。 在Zabbix中进行端口监控时,不一定需要…

AI赋能视创云展元宇宙展厅,打造沉浸式智能观展体验!

在AI人工智能迅猛发展的背景下,视创云展将元宇宙展厅与“AI智能助手”深度融合,这无疑是一次前瞻性的创新尝试,极大地丰富了展览展示的形式与内容,为参观者打造了一个既沉浸又智能的观展新纪元。 一、沉浸式体验 元宇宙展厅利用虚…

OpenAI 向少部分用户推出 GPT-4o(S2S)模型;Meta 发布 3D Gen AI 模型丨 RTE 开发者日报

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…

【Python】基于动态规划和K聚类的彩色图片压缩算法

引言 当想要压缩一张彩色图像时,彩色图像通常由数百万个颜色值组成,每个颜色值都由红、绿、蓝三个分量组成。因此,如果我们直接对图像的每个像素进行编码,会导致非常大的数据量。为了减少数据量,我们可以尝试减少颜色…

Redis理解【精细】【快速上手】

目录 1. 了解3V和3高 2.什么是redis 3. redis可以做什么 4. Windows安装 5. 使用redis客户端操作redis 5.1 redis基本命令 5.1.1 切换数据库 5.1.2 查看当前数据库的大小 5.1.3 查看当前数据库所有的key ​​​​​​​ 5.1.4 清空当前数据库所有key 5.1.5 清空所…

Element 的 el-table 表格实现单元格合并

html 部分 <template><div class"index-wapper"><el-table :data"tableData" :span-method"objectSpanMethod" border><el-table-column v-for"(item, index) in tableHeader" :key"index" :prop&quo…

Android Studio上传新项目到Gitee

一、在Gitee上创建仓库 首先需要再Gitee上创建仓库 1、在Gitee中新建仓库 2、输入仓库信息 3、生成仓库地址 创建成功会生成一个仓库地址&#xff0c;格式如下&#xff1a; https://gitee.com/test/compose_mvi_demo.git二、Android Studio 上传项目到Gitee 1、在Android …

微信小程序转发朋友圈详细教程

微信小程序转发朋友圈功能&#xff0c;官方说的很官方&#xff0c;容易踩坑 官方链接戳这里 想分享朋友圈必须要分享好友 onShareTimeline() { } 想要生效必须先定义 onShareAppMessage() { } /*** 用户点击右上角分享*/onShareAppMessage() { },onShareTimeline() { } 简单…

一维信号全变分(TV)降噪方法(MATLAB)

信号降噪一直是领域研究的热点&#xff0c;这是一项十分有意义并且极具挑战性的工作&#xff0c;经过几十年来相关科研人员的共同努力&#xff0c;降噪技术得到了极大的发展&#xff0c;并在现实生活中也得到了广泛的应用。其中&#xff0c;许多常用的方法有&#xff1a;小波变…

免费最好用的证件照制作软件,一键换底+老照片修复+图片动漫化,吊打付费!

这款软件真的是阿星用过的&#xff0c;最好用的证件照制作软件&#xff0c;没有之一&#xff01; 我是阿星&#xff0c;今天要给大家安利一款超实用的证件照工具&#xff0c;一键换底&#xff0c;自动排版&#xff0c;免费无广告&#xff0c;让你在家就能轻松搞定证件照&#…

搭建知识付费系统的技术框架与实现路径

知识付费系统已经成为内容创作者和企业变现的重要工具。要成功搭建一个高效、稳定、用户体验良好的知识付费系统&#xff0c;明确技术框架和实现路径至关重要。本文将详细解析搭建知识付费系统的技术框架&#xff0c;并提供具体的实现路径和相关技术代码示例。 一、知识付费系…

测试图片上传功能,使用postman提供的url

是不是有时候想要测试图片上传功能&#xff0c;但是没有后台url进行测试&#xff0c;这时候就可以使用postman提供的url&#xff1a; https://postman-echo.com/post接下来&#xff0c;我将教你在postman中&#xff0c;用该url测试图片上传功能。 1.发送图片上传请求 第一步…

Character.ai因内容审查流失大量用户、马斯克:Grok-3用了10万块英伟达H100芯片

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 1、爆火AI惨遭阉割&#xff0c;1600万美国年轻人失恋&#xff1f;Character.ai被爆资金断裂 美国流行的社交软件Character.ai近期对模型进行大幅度内容审查&#xff0c;导致用户感到失望并开始流失。…

12. Revit API: Document、Element

12. Revit API: Document、Element 前言 还是先讲一下Document吧&#xff0c;不然Selection不好讲&#xff0c;那涉及到了挺多东西的&#xff0c;比元素&#xff08;Element&#xff09;和各类Filter&#xff0c;这些都与Document有关&#xff0c;所以先简单讲一下这个。 一、…

Chart.js四个示例

示例代码在图片后面&#xff0c;点赞加关注&#xff0c;谢谢 条形图 雷达图 折线图 圆环图 完整例子代码 具体代码在干什么看粗体加重的注释 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <me…

C++精解【10】

文章目录 读写文件概述example csv读文件读取每个字段读取机器学习数据库iris constexpr函数GMP大整数codeblock环境配置数据类型函数类 EigenminCoeff 和maxCoeffArray类 读写文件 概述 fstream typedef basic_fstream<char, char_traits<char>> fstream;此类型…

【大数据】什么是数据融合(Data Fusion)?

目录 一、数据融合的定义 二、数据融合的类型 三、数据融合的挑战 四、数据融合的方法 五、数据融合的关键环节 1.数据质量监控指标的制定和跟踪 2.异常检测和处理机制 3.实时数据监测与反馈机制 4.协同合作与知识共享 一、数据融合的定义 数据融合&#xff08;Data Fusion&…