「这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战」
前沿
什么叫做自定义Widget实现互斥效果呢?
在使用Qt做一个界面美观性比较强的功能时,可能会遇到这种问题:多个控件互斥,类似于QRadiButton控件,但又不是单纯的QRadioButton控件,互斥的可能是一个窗口,也可能是几个按钮,等等多种情况。
这里我只是列举了一个简单的互斥例子,虽然简单,但是包含了各种坑,有需要的掘友们可以小笔记们记一下,尤其是对Qt新手来说,还是很有必要的。
由效果图可以看出创建了3个自定义widget,点击其中一个时,另外两个背景色以及文本颜色变化,处于选中状态。
接下来,针对效果图展示的功能进行逐一讲解,包含了知识点以及踩坑记录。
功能实现
实现自定义互斥widget过程中遇到了如下知识点以及问题,看看有没有你曾经遇到的或者是刚好需要的功能吧!
知识点
1:Widget模拟按钮的四态功能,包括了:常态、按下、聚焦、禁用
2:Widget自定义类的背景色设置以及文本内容风格设置
3:如何让多个widget实现互斥效果
问题
1:自定义Widget背景色设置之后为什么不生效?
针对上述知识点以及问题来讲述这个简单的功能吧!
讲解知识点1
使用Widget模拟按钮的四态功能,需要用到Widget自身的消息:鼠标按下,鼠标进入、鼠标离开。
virtual void mousePressEvent(QMouseEvent *event); //鼠标按下响应消息
virtual void enterEvent(QEvent *e