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

相关推荐
Mike_Zhang2 分钟前
C++使用WinHTTP访问http/https服务
c++
CHANG_THE_WORLD4 分钟前
「macOS 系统字体收集器 (C++17 实现)」
开发语言·c++·macos
GiraKoo10 分钟前
【GiraKoo】Breakpad 崩溃分析系统
c++
妄想出头的工业炼药师23 分钟前
python和C++相互调用使用
开发语言·c++
景彡先生32 分钟前
C++17 并行算法:std::execution::par
开发语言·c++
JiaJZhong42 分钟前
力扣.最长回文子串(c++)
java·c++·leetcode
oioihoii1 小时前
C++随机打乱函数:简化源码与原理深度剖析
开发语言·c++·算法
WZF-Sang2 小时前
计算机网络基础——1
网络·c++·git·学习·计算机网络·智能路由器
默凉2 小时前
C++ 虚函数(多态,多重继承,菱形继承)
开发语言·c++
-凌凌漆-2 小时前
【Qt】Qt QML json处理
开发语言·qt·json