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的安装包可以私信我,你们的支持是博主坚持创作的动力!💪💪

相关推荐
杨小码不BUG24 分钟前
蛇形舞动:矩阵填充的艺术与算法(洛谷P5731)
c++·算法·矩阵·csp-j/s·循环控制
执尺量北斗35 分钟前
LinkMate 智能会议室系统:基于 Qt / QML / WebRTC / FFmpeg / Whisper / OpenGL 的实时音视频会议平台
qt·ffmpeg·webrtc
草莓熊Lotso1 小时前
《C++ STL list 完全指南:从基础操作到特性对比,解锁链表容器高效用法》
开发语言·c++·list
繁星星繁2 小时前
C++11学习笔记
c++·笔记·学习
Stanford_11067 小时前
如何利用Python进行数据分析与可视化的具体操作指南
开发语言·c++·python·微信小程序·微信公众平台·twitter·微信开放平台
千里马-horse8 小时前
Async++ 源码分析8--partitioner.h
开发语言·c++·async++·partitioner
Lucis__9 小时前
再探类&对象——C++入门进阶
开发语言·c++
北京不会遇到西雅图10 小时前
【SLAM】【后端优化】不同优化方法对比
c++·机器人
jndingxin11 小时前
c++多线程(6)------ 条件变量
开发语言·c++
共享家952711 小时前
QT-常用控件(二)
开发语言·qt