Qt控件的盒子模型,了解边距边线和内容区

这篇专门讲讲一个控件在绘制时的视觉样式。我们平常在对控件设置样式时,需要设置控件的一些外边距,内边距,边线,还有文字内容,贴上图片等。那么对于一个控件,到底怎么实现这些设置的呢?

先看下面这个图,这是一个标准的盒模型,也叫盒子模型。

这是一般控件的实际结构,比如QLabel,QPushbutton等,内部的结构实际都是这种样子。分为:外边距区域,边线区域,内边距区域,内容区域。

外边距区域:外边距区域通常是指标签内文本或图片与标签部件边界之间的空白区域。注意:一个控件的整个区域,是包含外边距区域的!

边线区域:边线区域,顾名思义,就是咱们平常看到的QLabel的边框占据的区域。边框可与是粗边框,可以是细边框,可以只有下边框或者其他某一边的边框线。都在这一区域绘制,当然你也可以将它设置为0px,就相当于取消了边框区域,给边框区域不留空间。

内边距区域:内边距区域‌是指控件内边线区域与内容之间的空间。你想要内容离上边框多点,离下边框近点,输了设置字体大小,就可以设置这个内边距区域。

内容区域:内容区就比较简单了,就是我们文字显示的区域。

再来说说,这块的样式设计。一般在样式表中,需要变哪些就设置哪些,比如你特意要文字左对齐,但又想离边线留个10px的距离,那么就可以设置左边内边距为10px;你想跟前面的另一个紧挨的控件留点距离,就可以设置外边距,当然,这种常见的需求,有很多中实现方式。下面贴一些常见的样式写法:

cpp 复制代码
QLabel{
//前景色
	color: qlineargradient(x1:0, y1:0, x2:1, y2:0,stop:0 rgb(20, 220, 60),stop:1 rgb(30, 40, 240));
	//顶部边线透明
		border-top-color: transparent;
		//右边线透明
		border-right-color: transparent;
		//左边线透明
		border-left-color: transparent;
		//文字左右居中,上下也居中
		text-align: center center;
		//字体组,加粗,雅黑
		font: bold normal 18pt "Microsoft YaHei";
}
相关推荐
qq_172805593 分钟前
基于Go的动态定时器管理功能架构方案设计与实现
开发语言·架构·golang
xuankuxiaoyao4 分钟前
VUE.JS 实践 第一章
前端·javascript·vue.js
小乔的编程内容分享站5 分钟前
C语言笔记之结构体第二篇
c语言·开发语言·笔记
codeJinger7 分钟前
【Python】集合
开发语言·python
俩娃妈教编程10 分钟前
C++基础知识点:位运算
java·开发语言·jvm·c++·位运算
zhoupenghui16810 分钟前
golang 锁实现原理与解析&锁机制(sync)种类与举例说明以及其使用场景
开发语言·后端·golang·mutex·wait·lock·sync
路弥行至14 分钟前
linux运行脚本出现错误信息 /bin/bash^M: bad interpreter解决方法
linux·运维·开发语言·经验分享·笔记·其他·bash
森G15 分钟前
12、编译QT Opencv项目----------Opencv移植Arm
qt
一直不明飞行15 分钟前
C++ pari使用的两个注意事项
开发语言·c++
娇娇yyyyyy17 分钟前
QT编程(2):模态对话框和非模态对话框
qt