QT界面优化:【QSS】【绘图】
・主动调用 QWidget 类的 repaint () 方法或 update () 方法时(二者均用于触发重绘,区别是 repaint () 会立即执行重绘,update () 会延迟到下一次事件循环统一处理,更节省资源)。使用时也可以自定义画笔,Qt 中的 QPen 类定义了 QPainter 绘制形状、线条和轮廓的方式,通过它可以设置画笔的线宽、颜色、样式、画刷等属性。・调用控件的 setVi
目录
一. 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)