需求

当我们在使用QT 的QPushButton时,可能有互斥的需求,只能选择其中的一个,且按下后要有不同的背景图片加载。

如:男女的选择,只能二选一,选完后按纽的状态是选中的状态,另外一个按纽恢复成末选中的状态。

在网上找了一张图片如下:
QPushButton互斥选择_属性设置
为了验证方便我们使用QT designer.

QButtonGroup

这里我们要用到QButtonGroup这个类,
The QButtonGroup class provides a container to organize groups of button widgets.

这个类提供了一个管理button的容器。

步骤

0、拖两个按键到主UI上,将两者的大小改成切图时图片的大小

1、在QT designer里我们同时选中两个button,右键后—> 指定到按钮组

2、添加资源文件
将上图的图片切割成四张大小一样的png格式的图片,并添加到工程的资源文件下。

3、增加样式表
右键 “男” 按键—> 改变样式表…

QPushButton{
border-image: url(:/manV.png);} //空心图片
QPushButton:checked{
border-image: url(:/man.png);} //黑心图片

右键 “女” 按键—> 改变样式表…

QPushButton{
border-image: url(:/womanV.png);} //空心图片
QPushButton:checked{
border-image: url(:/woman.png);} //黑心图片

4、设置属性 checkable

将两个按键的chechable属性设置成enable,然把其中的一个的checked 属性设置成enable.

备注:

1、QPushButton:checked 为按下后的状态

2、border-image 这个属性图片会随着控件的大小而拉伸。