目录
- 引言
- 代码实现
引言
QSS是Qt客户端开发中非常重要的一环,也是非常容易被忽略的一环。因为网上有太多的博文直接给出了相对美观的样式,导致多数人只是将样式表拷贝使用,而没有细究其中的语法。这也是我在面试时分辨Qt界面开发经验的重要标准,如果不能很好读懂QSS,对于大型项目的复杂界面表现的要求就很难得心应手。
其实QSS可以看作一门控制界面样式的简单语言,主要由选择器和属性组成,选择器有类选择器、对象选择器、属性选择器等,属性有字体、背景等,具体参见博文《QSS美化——基础知识》,里面详细描述了QSS的基础知识,建议对于相关知识还比较模糊的同学进行阅读。
回到这次的主题,背景图片是在界面开发中经常用到的,对于无法进行重绘的复杂图形,贴图是必要的手段。大家使用贴图时通常是进行拉伸的,但如果图片存在不规则的图案拉伸比如会导致是真。以下图为例,其中边框存在不规则倒角和一个明显的异性图案,如果直接拉伸的话,原不规则图形会随着被贴图控件的实际大小而变化,导致原始比例、尺寸异常,不符合原有设计。
为了避免上述问题的发生,相对比较笨的方法就是针对不同尺寸,给出不同的原始图片,这种虽然能解决问题但不够简洁,会多出很多相似图片。那有没有可能只是拉伸图片中间的区域,因为中间是规则的线条,这样原本不规则区域没有发生变化,同时还能适配不同大小的控件,如下图所示:
代码实现
border-image: url(:/image/board_frame_bg.png);
border-top: 65px transparent;
border-right: 130px transparent;
border-bottom: 33px transparent;
border-left: 160px transparent;
最终效果,如下图所示: