QT控件样式系列(二)之QPushButton/QToolButton

系列文章目录

QT控件样式系列(一)之QSlider



前言

本篇主要讲解 QPushButton 和 QToolButton 的样式和使用


一、样式表

QPushButton 和 QToolButton 的样式通用的,主要如下,感觉直接贴图就行了,其他属性没用

/*按钮背景图片*/
QPushButton
{
	/*剩下字体,按钮宽高根据需要设置*/
	border-image:url(:/images/Button/pushbtn.png); 
}

/*鼠标悬浮时背景图片*/
QPushButton:hover
{
	border-image: url(:/images/Button/pushbtn2.png);
}

/*鼠标点击时背景图片*/
QPushButton:pressed
{
	border-image: url(:/images/Button/pushbtn3.png);
	padding-left:3px;	/*如果按钮有文字,则点击时文字向右下角偏移3px*/
	padding-top:3px;
}

/*按钮选中时背景图片*/
QPushButton:checked
{
	border-image: url(:/images/Button/pushbtn4.png);
}

/*按钮禁用时背景图片,等价于!enabled*/
QPushButton:disabled
{
	border-image: url(:/images/Button/pushbtn5.png);
}

二、相关应用

1. 场景一

最近开发过程中,需要设计自定义形状按钮,通过使用 png 透明格式图片贴图,也能实现该功能;但是有个问题,看图说话
在这里插入图片描述
当鼠标点击按钮背景透明区域时,按钮也能响应,显然不符合需求,需要做如下处理,通过mask获取自定义形状按钮的有效区域

QPixmap pixmap(qstrImgPath);	// 读入图片
pBtn->resize(pixmap.size());	// 设置按钮大小和图片大小一致
pBtn->setMask(QBitmap(pixmap.mask()));	// 将图片转成1或0的位图,可见区域对应1,透明区域未0,通过设置Mask,可屏蔽可见区域以外的鼠标响应事件

2. 场景二

QToolButton 设置图标 ico 位置居左/置顶;虽然 QPushButton 也能设置图标 ico(默认居中),但是不能设置其位置
在这里插入图片描述

3. 场景三

QPushButton 和 QToolButton 有时需要设置可选中,如下图所示,勾选属性checkable
在这里插入图片描述
多个按钮可选时,需要设置独占(同时只能选中一个),有两种方式:勾选属性 autoExclusive 和 添加到按钮组,如下图所示
在这里插入图片描述在这里插入图片描述
但是勾选之后不能取消勾选,需要独占的同时并取消勾选可以参考我这篇博客:QT 按钮单选互斥并取消抬起

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Li_Zhi_Yao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值