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

相关推荐
jdlxx_dongfangxing15 分钟前
2023 年 NOI 最后一题题解
c++·noi
Q741_14727 分钟前
优选算法 力扣 202.快乐数 快慢双指针 解决带环问题 C++解题思路 每日一题
c++·算法·leetcode·快慢双指针·环形问题
R-G-B36 分钟前
【C++ 初级工程师面试--4】形参带默认值的函数,特点,效率,注意事项
开发语言·c++·形参带默认值的函数·形参默认值特点,效率,注意事项·形参默认值特点·形参默认值效率·形参默认值注意事项
西红柿煎蛋1 小时前
C++17的 std::string_view 是为了解决什么问题?它和 const std::string& 相比有什么核心优势和潜在陷阱?
c++
YLCHUP1 小时前
题解:P4447 [AHOI2018初中组] 分组
开发语言·数据结构·c++·经验分享·算法·贪心算法·抽象代数
R-G-B2 小时前
【10】大恒相机SDK C++开发 ——对相机采集的原图像数据IFrameData裁剪ROI 实时显示在pictureBox中,3种方法实现(效率不同)
c++·大恒相机开发·大恒相机·工业相机原图像数据裁剪roi·iframedata裁剪roi·原图像数据裁剪roi 实时显示
三小尛2 小时前
C++友元
开发语言·c++·算法
小指纹2 小时前
河南萌新联赛2025第(三)场:河南理工大学【补题】
数据结构·c++·算法·macos·ios·objective-c·cocoa
懷淰メ3 小时前
日常--详细介绍qt Designer常用快捷键(详细图文)
开发语言·qt·pyqt·快捷键·qtdesigner·ui设计·qt设计师
啊森要自信3 小时前
【QT】Qt 信号与槽的使用详解&&连接方式&&Lambda表达式定义槽函数
android·开发语言·c++·qt·qt5