当前位置: 首页 > news >正文

【Qt】常见控件 —— QWidget(上)

文章目录

  • QWidget 的基本介绍
  • QWidget 的 enable 属性
  • QWidget 的 geometry属性
  • QWidget 的 windowTitle属性

QWidget 的基本介绍

Qt 中 的 各种控件 都继承自 QWidget类


在 Qt designer 右侧 就显示出 QWidget的各种属性
并且也可以直接进行编辑


QWidget 的 enable 属性

enable 描述一个控件是否处于可用 的状态


可用 相对的概念为 禁用
禁用 指的是 该控件不能接收任何用户的输入事件 并且外观上是灰色的
如果一个 控件被禁用 则该控件的子元素 也会被禁用


isenable() 获取到控件的可用状态
setEnabled 设置控件是否被使用 true表示可用 false 表示禁用


使用 setEnabled 函数 并将其设置为 false 即按钮处于禁用状态 处于灰色


在Qt designer中 通过拖拽 Push Button 的方式 创建 两个 按钮


当选中 第一个按钮时 对应的 objectName 为 pushButton
当选中 第二个按钮时 对应的 objectName 为 pushButton_2

在同一个界面中 要求 不同的控件 的 objectName 也是必须不同的
就可以通过 ui->objectName 的 方式 来获取到 对应的控件对象


但是 使用 以数字的方式命名 不是一个好的编程习惯
所以要将第二个按钮 对应的 objectName 进行修改 为 pushButton_enable


右击按钮 选择转到槽 发现clicked 有两个版本 一个是无参数的 一个有bool参数的
一般对于 QPushButton来说 使用 无参数的即可

clicked(bool) 表示 是否被勾选 对于 pushButton 没有意义


当按下第一个按钮时 打印日志
当按下第二个按钮时 通过 isEnabled函数 测试当前的第一个按钮是否可用 若可用则使用 setEnabled 函数 将其设置为 禁用
若不可用 则使用 setEnabled 函数 将其 设置为 可用


运行程序后 当前第一个按钮可用 当点击切换可用状态 按钮后 第一个按钮变为 灰色


QWidget 的 geometry属性

geometry 称为 几何 x y width height 的 统称

x 表示 当前坐标系的 横坐标
y表示 当前坐标系的 纵坐标
width 表示 宽度
height表示 高度
geometry 表示 当前控件的位置 和尺寸


geometry() 获取到控件的位置和尺寸 返回的是 QRect 包含了 x y width height (x y 是左上角坐标)

setGeometry(QRect)
setGeometry( int x , int y , int width , int height)
设置控件的位置和尺寸 可以直接设置一个QRect 可以分为四个属性单独设置


在 Qt designer中 设置 target up left right down 按钮
期望通过 up left right down 按钮 来修改 target按钮的 geometry


up left right down 四个按钮 通过转到槽 的方式 生成四个槽函数
先通过 geometry 函数 获取 对应的 target控件的位置和尺寸
再通过 向上 向下 向左 向右 修改大小
将临时变量rect 放入 setGeometry函数做参数 设置target控件的位置和尺寸


运行程序后 点击 up 实际上发现是 在调整左上角的位置 改变左上角位置的同时 高度和宽度也发生改变


调用 有参数的 setGeometry 函数 ,在参数内部 对原本的rect的y 做出改变 使其向上平移 x width height 不变


运行程序后 通过点击up 使得target 进行向上平移

QWidget 的 windowTitle属性

windowTile 属性 属于 QWiget
QWidget 是一个 广泛的概念
windowTile 属性 只能针对 顶层窗口 这样的 QWidget 才有效


windowTile () 获取到控件的窗口标题
setWindowTitle( const QString& title) 设置控件的窗口标题


使用 setWindowTitle 函数 设置 窗口标题 将Widget窗口 改变


相关文章:

  • 甲醛最怕三个克星 新家去除甲醛最快最有效的方法
  • Redis内存淘汰
  • Android 息屏录音
  • yolact导出onnx
  • 如何通过数据管理优化储能系统的运行效率?
  • Android Studio SQLite Manage
  • Java集合框架--LIST,ArrayList,LinkedList
  • 笔记-系统规划与管理师-案例题-2022年-IT服务部署实施
  • 第三十一章:docker如何部署Nexus
  • 搭建Windows环境下的Redis服务与TinyRDM客户端
  • libcurl 库curl_easy_setopt()函数CURLOPT_WRITEDATA和CURLOPT_BUFFERSIZE选项
  • git 落后主分支提交
  • 2.2 python基础知识复习——python面向对象的原理和代码详解
  • web 3D可视化技术
  • 【TB作品】TM1637芯片数码管,PIC16单片机驱动显示,Proteus仿真
  • 〔开发系列〕一次关于小程序开发的深度总结
  • Fabric架构演变之路
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • mac修复ab及siege安装
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • SOFAMosn配置模型
  • Swoft 源码剖析 - 代码自动更新机制
  • Travix是如何部署应用程序到Kubernetes上的
  • TypeScript迭代器
  • Vue 2.3、2.4 知识点小结
  • vue自定义指令实现v-tap插件
  • 分类模型——Logistics Regression
  • 和 || 运算
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 收藏好这篇,别再只说“数据劫持”了
  • 通信类
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • - 转 Ext2.0 form使用实例
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • $.ajax()参数及用法
  • (day 12)JavaScript学习笔记(数组3)
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (Ruby)Ubuntu12.04安装Rails环境
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (第一天)包装对象、作用域、创建对象
  • (二)斐波那契Fabonacci函数
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (五)网络优化与超参数选择--九五小庞
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core WebAPI中封装Swagger配置
  • .NET Framework 4.6.2改进了WPF和安全性
  • .net framework 4.8 开发windows系统服务
  • .NET 指南:抽象化实现的基类
  • .NET 中创建支持集合初始化器的类型
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .Net--CLS,CTS,CLI,BCL,FCL