102 lines
2.7 KiB
Markdown
102 lines
2.7 KiB
Markdown
|
## 参考项目
|
|||
|
https://blog.csdn.net/liang19890820/article/details/50557240
|
|||
|
https://www.cnblogs.com/feiyangqingyun/p/3915657.html
|
|||
|
|
|||
|
QSS模板网站:https://qss-stock.devsecstudio.com/
|
|||
|
|
|||
|
## 技巧
|
|||
|
Qt内置图标封装在QStyle中,大概七十多个图标,可以直接拿来用。
|
|||
|
|
|||
|
- SP_TitleBarMenuButton,
|
|||
|
- SP_TitleBarMinButton,
|
|||
|
- SP_TitleBarMaxButton,
|
|||
|
- SP_TitleBarCloseButton,
|
|||
|
- SP_MessageBoxInformation,
|
|||
|
- SP_MessageBoxWarning,
|
|||
|
- SP_MessageBoxCritical,
|
|||
|
- SP_MessageBoxQuestion,
|
|||
|
|
|||
|
## 配色
|
|||
|
ElementUI配色:https://element.eleme.cn/#/zh-CN/component/color
|
|||
|
|
|||
|
Brand Color `#409EFF`
|
|||
|
|
|||
|
**辅助色**:
|
|||
|
- Success#67C23A
|
|||
|
- Warning#E6A23C
|
|||
|
- Danger#F56C6C
|
|||
|
- Info#909399
|
|||
|
|
|||
|
**基础色**:
|
|||
|
- 主要文字#303133
|
|||
|
- 常规文字#606266
|
|||
|
- 次要文字#909399
|
|||
|
- 占位文字#C0C4CC
|
|||
|
- 一级边框#DCDFE6
|
|||
|
- 二级边框#E4E7ED
|
|||
|
- 三级边框#EBEEF5
|
|||
|
- 四级边框#F2F6FC
|
|||
|
|
|||
|
## 边框
|
|||
|
- 实线 1px
|
|||
|
- 虚线 2px
|
|||
|
|
|||
|
### 圆角
|
|||
|
- 无圆角border-radius: 0px
|
|||
|
- 小圆角border-radius: 2px
|
|||
|
- 大圆角border-radius: 4px
|
|||
|
- 圆形圆角border-radius: 30px
|
|||
|
|
|||
|
### 投影
|
|||
|
- 基础投影 box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)
|
|||
|
- 浅色投影 box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1)
|
|||
|
|
|||
|
## QSS设置函数
|
|||
|
feiyangqingyun-QWidgetDemo-master/FlatUI<br>
|
|||
|
使用函数的方式来生成QSS代码与设置对应的控件。
|
|||
|
```
|
|||
|
QString BRUI::setPushButtonQss(QPushButton *btn, int radius, int padding,const QString &normalColor,const QString &normalTextColor,const QString &hoverColor,const QString &hoverTextColor,const QString &pressedColor,const QString &pressedTextColor)
|
|||
|
{
|
|||
|
QStringList list;
|
|||
|
list.append(QString("QPushButton{border-style:none;padding:%1px;border-radius:%2px;color:%3;background:%4;}").arg(padding).arg(radius).arg(normalTextColor).arg(normalColor));
|
|||
|
list.append(QString("QPushButton:hover{color:%1;background:%2;}").arg(hoverTextColor).arg(hoverColor));
|
|||
|
list.append(QString("QPushButton:pressed{color:%1;background:%2;}").arg(pressedTextColor).arg(pressedColor));
|
|||
|
|
|||
|
QString qss = list.join("");
|
|||
|
if(btn)
|
|||
|
btn->setStyleSheet(qss);
|
|||
|
return qss;
|
|||
|
}
|
|||
|
```
|
|||
|
## 可以参考的UI工程
|
|||
|
QSS生成工具:StyleDemo。
|
|||
|
|
|||
|
给QWidget添加属性来控制样式:
|
|||
|
```
|
|||
|
ui->widgetLeft->setProperty("nav", "left");
|
|||
|
ui->widgetBottom->setProperty("form", "bottom");
|
|||
|
ui->widgetTop->setProperty("nav", "top");
|
|||
|
ui->widgetVideo->setProperty("video", true);
|
|||
|
```
|
|||
|
Qss:
|
|||
|
```
|
|||
|
QWidget[nav="left"] QAbstractButton:checked,QWidget[nav="left"] QAbstractButton:pressed{
|
|||
|
color:#386487;
|
|||
|
border-style:solid;
|
|||
|
border-width:0px 0px 0px 2px;
|
|||
|
padding:4px 4px 4px 2px;
|
|||
|
border-color:#00BB9E;
|
|||
|
background-color:#EAF7FF;
|
|||
|
}
|
|||
|
```
|
|||
|
### 切换器
|
|||
|
ImageSwitch
|
|||
|
### 日历
|
|||
|
lunarcalendarwidget
|
|||
|
### 导航按钮
|
|||
|
NavButton
|
|||
|
|
|||
|
## StyleDemo中的CSS
|
|||
|
flatwhite.css
|
|||
|
lightblue.css
|
|||
|
psblack.css
|