QT界面优化:【QSS】【绘图】
目录
一. QSS
1.1 基本语法

1.2 QSS设置样式
1.2.1 指定控件样式设置
QWidget 中包含了setStyleSheet 方法,可以直接设置样式。
另一方面,给指定控件设置样式之后,该控件的子元素也会受到影响。
ui->pushButton->setStyleSheet("QPushButton { color: red; }");
下面是父空间设置,可以这样写:
this->setStyleSheet("QPushButton { color: red;} ");

1.2.2 全局样式设置
还可以通过 QApplication 的 setStyleSheet 方法设置整个程序的全局样式。
全局样式优点:
・使同一个样式针对多个控件生效,代码更简洁。
・所有控件样式内聚在一起,便于维护和问题排查。
也就是说在main函数中:


注意:"局部"优先级高于 "全局" 优先级.
1.3 样式和代码分离
创建 style.qss 文件,并添加到 resource.qrc 中。
・style.qss 是需要程序运行时加载的。为了规避绝对路径的问题,仍然使用 qrc 的方式来组织。(即把资源文件内容打包到 cpp 代码中)。
・Qt Creator 没有提供创建 qss 文件的选项。咱们直接右键 -> 新建文件 -> 手动设置文件扩展名为 qss 即可。


当然更方便的还是直接在QT designer里写:

1.4 选择器

1.4.1子类选择器
前面加上"."就表示只对当前类生效
1.4.2 id选择器
也就说说“#”加上控件的名字

1.4.3 并集选择器

1.4.4 子控件选择器
有些有些控件内部包含了多个 "子控件"。比如 QComboBox 的下拉后的面板,比如 QSpinBox 的上下按钮等。
可以通过子控件选择器::,针对上述子控件进行样式设置。

1.4.5伪类选择器

设置按钮的伪类选择

也就是说把鼠标放在按钮上,按钮颜色就会变为绿色。
1.5 样式属性
1.5.1 盒模型



设置边框和内边距

设置外边距

1.6 空间样式示例
1.6.1 按钮
创建一个按钮




1.6.2复选框

创建一个复选框



1.6.3 输入框


1.6.4 列表框
渐变色

qlineargradient 有6个参数.
x1, y1: 标注了一个起点。
x2, y2: 标注了一个终点。
这两个点描述了一个 "方向"。
例如:
・x1: 0, y1: 0, x2: 0, y2: 1 就是垂直方向从上向下 进行颜色渐变。
・x1: 0, y1: 0, x2: 1, y2: 0 就是水平方向从左向右 进行颜色渐变。
・x1: 0, y1: 0, x2: 1, y2: 1 就是从左上往右下方向 进行颜色渐变。stop0 和 stop1 描述了两个颜色。渐变过程就是从 stop0 往 stop1 进行渐变的。

当然也可以对选项进行渐变色:


1.6.5 菜单栏




二. 绘图

注意:绘图API的使用,一般不会在QWidget的构造函数中使用,而是要放到paintEvent 事件中.
关于 paintEvent
paintEvent 会在以下情况下被触发:
・控件首次创建时。
・控件被其他窗口遮挡后,遮挡解除(重新显示)时。
・窗口最小化后,再次恢复显示时。
・控件的大小发生变化(如拉伸窗口导致控件尺寸改变)时。
・主动调用 QWidget 类的 repaint () 方法或 update () 方法时(二者均用于触发重绘,区别是 repaint () 会立即执行重绘,update () 会延迟到下一次事件循环统一处理,更节省资源)。
・父控件重绘时,若子控件未被完全遮挡,子控件的 paintEvent 也可能被触发。
・系统主题或样式发生变化时,控件可能需要重新绘制以适配新样式。
・调用控件的 setVisible (true) 或 show () 方法,将隐藏的控件显示时。
2.1 绘制各种形状


2.2 设置画笔
QPainter 在绘制时,会使用一个默认画笔。使用时也可以自定义画笔,Qt 中的 QPen 类定义了 QPainter 绘制形状、线条和轮廓的方式,通过它可以设置画笔的线宽、颜色、样式、画刷等属性。
- 设置画笔颜色:可通过 QPen 的构造函数 QPen::QPen (const QColor &color) 进行设置,画笔颜色主要通过 QColor 类来定义;
- 设置画笔宽度:使用 void QPen::setWidth (int width) 方法;
- 设置画笔风格:使用 void QPen::setStyle (Qt::PenStyle style) 方法;
- 设置画刷:主要通过 setBrush () 方法。
画笔风格有:


使用画笔

2.3 设置画刷
它的画刷

设置画刷主要通过 void QPen::setBrush(const QBrush &brush) 方法,其参数为画刷的格式。


2.4 绘制图片
注意旋转的那一个,是绕着坐标远点,所以需要我们重新设置坐标原点才可以显示出来:

更多推荐




所有评论(0)