QT控件样式系列(⼆)之QPushButtonQToolButton 系列⽂章⽬录
⽂章⽬录
前⾔
本篇主要讲解 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,可屏蔽可见区域以外的⿏标响应事件
改变button按钮的形状
2. 场景⼆
QToolButton 设置图标 ico 位置居左/置顶;虽然 QPushButton 也能设置图标 ico(默认居中),但是不能设置其位置
3. 场景三
QPushButton 和 QToolButton 有时需要设置可选中,如下图所⽰,勾选属性checkable
多个按钮可选时,需要设置独占(同时只能选中⼀个),有两种⽅式:勾选属性 autoExclusive 和 添加到按钮组,如下图所⽰
但是勾选之后不能取消勾选,需要独占的同时并取消勾选可以参考我这篇博客:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论