Qt Style Sheets 之 border-image

Qt Style Sheets 之 border-image


每次根据Qt文档说明使用border-image美化界面时,经常因为忘了设置border属性导至有边框的背景图片产生伸缩的细节问题。每次都花费一定的时间来反复尝试来解决细节问题。记录这篇文章来避免因忘记处理设置而反复尝试花费不必要的时间。

在复用同一张带有边框的背景图美化不同大小的控件时(如,QPushButton),背景图边框被伸缩而产生不友好的细节问题。如下图“未指定边框宽度的效果“:



复用同一张带有边框的背景图遇到上图“未指定边框宽度的效果”的情况时,可以使用border-image和border样式属性来解决问题,使背景效果达到上图中“指定边框宽度的效果”的样式。

类型语法说明
border-Imagenone|Url Number{4} (stretch|repeat){0,2}border-image 的图片分为9个部分(左上,中上,右上,左中,中心,右中,左下,中下,右下)。伸缩或重复上、右、下、左部分的边框来生成想要控制边框的拐角部分的大小。详情请查看CSS3 Draft Specificaion
border{Border Style|Length|Brush}*设置窗体边框的速写型式,等价于border-color,border-style和border-width.虽然文档中语法格式顺序是{Border Style|Length|Brush}*,但实际语法顺序是border:[Length] [Border Style] [Brush],例:border:1px solid red
border-top(同border)(同border)
border-right(同border)(同border)
border-bottom(同border)(同border)
border-left(同border)(同border)


当我们想要复用装饰小于或大于原尺寸的控件时,保持上面事例按钮图的左、上、右1px的边框线和底部较宽4px的边框效果。可以使用 语法 中的Number属性来保持左、上、右、底4个部分的边框宽度不被伸缩。使用样式语句如下正确解决问题( 注意:Number属性的4个值必须写足,且设置Number属性时,必须设置Border样式的Length属性来匹配Number的值。):
QPushButton{
    border-image:url(:/button.png) 1 1 4 1;
    border-top: 1px transparent;
    border-bottom: 4px transparent;
    border-right: 1px transparent;
    border-left: 1px transparent;
}


如果按钮图片的边框只有1px像素,那么仅需使唤用如下的样式语句来装饰

QPushButton{
    border-image:url(:/button.png) 1 1 1 1;
    border: 1px transparent;
}
  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值