Qt常用控件之QWidget(一)

Qt常用控件之QWidget(一)

🌟🌟hello,各位读者大大们你们好呀🌟🌟

🚀🚀系列专栏:【Qt的学习】

📝📝本篇内容:QWidget;enabled属性;geometry

⬆⬆⬆⬆上一篇:Qt的信号与槽(三)

💖💖作者简介:轩情吖,请多多指教(>> •̀֊•́ ) ̖́-

1.QWidget

在我们学习常用控件时,第一个要关注的肯定是QWidget,因为QWidget是很多控件的父类,它在图形化界面中就是一个窗口,我们可以点击它来查看它的属性

上图展示了大部分属性的一个解释,可以先做一个简单的了解,只看文字肯定不能做到完全理解。

2.enabled属性

这个是讲的第一个属性,也是比较简单,它的功能是描述一个控件是否是可用状态,那么它相对地概念就是禁用

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

enabled有两个可用的函数

函数声明 函数功能
isEnabled() 获取控件的状态
setEnabled(bool false) 设置控件的状态,true为可用,false为禁用

我们可以通化这个两个函数来实现一个功能:通过一个按钮来控制另一个按钮的可用状态


我们可以观察到我们两个按钮的objectName是不一样的,是以控件类型+下划线+编号的规律来的,前面也讲过,控件的objectName是必须不一样的,后续我们就可以通过ui指针来进行指向objectName,指向想要的对象。我们可以进行重命名,将"切换按钮状态"的按钮的objectName改成pushButton_switch,更加有可读性。


我们也通过打调试信息的方式来测试了"按钮"的功能,也可以发现,我们的按钮一旦禁用,就会变成灰色

2.geometry

接下来要讲的一个属性是geometry,但是我们要首先关注的是它的一个发音和中文释义以及它的拼写

它的中文意思是几何的意思,在Qt中表示的是位置和尺寸的统称,即x,y,width,height,分别对应的是:横坐标,纵坐标,宽度,高度。如图所示是各个属性表示的内容

在前面也讲过我们计算机中的坐标系是左手坐标系,其坐标系的原点是当前元素的⽗元素的左上⻆。

我们在实际的开发中,并不会直接使用这几个属性,而是通过封装的形式来获取和修改,就如同这里的geometry

接下来我们介绍一下关于geometry这个属性的相关函数

函数声明 函数功能
const QRect& geometry() const 获取控件的位置和尺寸,返回值是一个QRect类型的,是"矩形"英文的缩写,它包含了前面提到的四个属性
void setGeometry(const QRect &) 设置控件的位置和尺寸,以QRect这个类型为整体进行设置
void setGeometry(int x, int y, int w, int h) 设置控件的位置和尺寸,以四个单独的属性进行设置

接下来我们写代码演示,功能是:通过四个按钮来控制一个按钮的四个方向移动



设置了四个按钮,并且分别对其objectName重新命名

move的功能是单纯的修改位置,但是geometry既可以修改位置还可以修改尺寸,并且我们在代码中使用了qDebug()宏来打印位置尺寸信息,这些数字的单位都是像素,qDebug()能够自动识别并打印出QRect类型的内容。但是有一个问题,为什么我们修改了它的坐标轴,它的尺寸也会发生改变?有没有什么办法让按钮单纯的移动位置呢?

我们仔细观察就能发现,它其实是一直在调整左上角的位置,但是也同时调整了宽度和高度,我们的代码修改的是QRect的x和y(矩形会不断的变化),如果想要达到按钮平移就需要用到我们之前讲的第二个函数,不再修改QRect,而是基于QRect的数据通过setGeometry进行挨个设置。


🌸🌸Qt常用控件之QWidget(一)大概就讲到这里啦,博主后续会继续更新更多Qt的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!如有小伙伴需要Qt的安装包可以私信我,你们的支持是博主坚持创作的动力!💪💪

相关推荐
WZF-Sang12 分钟前
计算机网络基础——1
网络·c++·git·学习·计算机网络·智能路由器
默凉27 分钟前
C++ 虚函数(多态,多重继承,菱形继承)
开发语言·c++
-凌凌漆-35 分钟前
【Qt】Qt QML json处理
开发语言·qt·json
小庞在加油1 小时前
《重构项目》基于Apollo架构设计的项目重构方案(多种地图、多阶段、多任务、状态机管理)
c++·重构·apollo架构
让我们一起加油好吗2 小时前
【基础算法】贪心 (四) :区间问题
c++·算法·贪心算法·洛谷
双叶8362 小时前
(C++)任务管理系统(正式版)(迭代器)(list列表基础教程)(STL基础知识)
c语言·开发语言·数据结构·c++·list
七七七七073 小时前
类与对象【下篇】-- 关于类的其它语法
c语言·开发语言·c++
黄皮の电气鼠3 小时前
C++:继承
开发语言·c++·算法
shylyly_3 小时前
专题一_双指针_查找总价格为目标值的两个商品
c++·算法·leetcode·双指针·查找总价格为目标值的两个商品·和为s的两个数
R-G-B3 小时前
【03】MFC入门到精通——MFC 添加控件 设置属性 按钮 文本框
c++·mfc·mfc添加控件