【AIOT】QT样式QSS

news2025/1/11 10:11:33

使用桌面的PyQt或者web的flaskweb方便快捷的部署搭建可视化AI应用演示Demo,这里记录使用PyQt搭建基于Mediapipe和MixMLP网络的识别控制系统QSS样式代码。
Styles sheets are textual specifications that can be set on the whole application using QApplication::setStyleSheet() or on a specific widget (and its children) using QWidget::setStyleSheet(). If several style sheets are set at different levels, Qt derives the effective style sheet from all of those that are set. This is called cascading.

样式表使用方式:

  1. 在Qt Designer设计窗体时,直接用样式表编辑器为窗体或窗体上的某个部件设计样式表,对应用程序是固定的,无法取得换肤的效果,而且需要为每个窗体都涉及样式表,重复性工作太大;方法:右击窗体或某个部件→选择“Change styleSheet”

  2. setStyleSheet函数:

    1. 使用qApp的setStyleSheet函数可以为应用程序全局设置样式。qApp->setStyleSheet("QLineEdit{background-color: gray}");
    2. 使用QWidget::setStyleSheet函数可以为一个窗口、一个对话框、一个界面组件设置样式。例如下面为主窗口MainWindow内的QLineEdit组件设置样式 MainWindow->setStyleSheet("QLineEdit {background-color: lime}");
    3. 单独设置一个Object对象的样式表。这种情况无需设置selector(选择器)的名称。例如下面是设置一个名为editName的QLineEdit组件的样式: editName-setStyleSheet("color:blue;" background-color: yellow;")
  3. 使用.qss文件,为了实现动态切换样式表,一般将样式定义保存为.qss后缀的纯文本文件,然后再程序中打开文件,读取文件内容,再调用setStyleSheet函数应用样式表

    QFile file(":/qss/mystyle.qss");
    file.open(QFile::ReadOnly);
    QString styleSheet=QString:: fromLatin1(file.readAll());
    aQpp-setStyleSheet(styleSheet)
    

0. 选择器

QPushButton:hover { color: white }  /*当鼠标悬停在QPushButton上时*/
QRadioButton:!hover { color: red }  /*当鼠标(不)悬停在QRadioButton上时*/
QCheckBox:hover:checked { color: red } /*鼠标悬停在已检查的QCheckBox上的情况:*/
QPushButton:hover:!pressed { color: blue } /*悬停在未按下的QPushButton上时*/

1. 盒子模型

  • border-style: dotted;(点线) dashed;(虚线) solid; double;(双线) groove;(槽线) ridge;(脊状) inset;(凹陷) outset;
  • border-width:; 边框宽度
  • border-color:#;
  • border-image边框图片
  • border-radius:元素的外边框圆角
    • border-top-left-radius
    • border-top-right-radius
    • border-bottom-right-radius
    • border-bottom-left-radius
  • opacity:控件的不透明度, 可以用来显示一些控件颜色透明, background-color:rgb(14 , 135 , 228,0); RGB 透明度
.1. button 按钮
QPushButton#create{
  padding-left:-30px;
  color:black;
  border: 2px solid #067d9e; 
  font: 18pt "TImes New Roman";
  background-image:url("icons/create.png");
  border-radius:10px;
  background-repeat:none;
}
QPushButton#create:hover
{
   border-radius: 10px;
   background-color:#067d9e;
}

QPushButton#transfer{
border-radius: 10px;
border-image:url("icons/gesture2.png") 4 4 4 4 stretch stretch;
background-repeat:no-repeat;
background-size:100% 100%;
}

border: 2px solid white;
.2. 图片填充
border-image:url(:/images/bd.png) 4 4 4 4 stretch stretch;  /*图片填充满label*/
padding-top:10px; /*上边框留空白*/
padding-right:10px; /*右边框留空白*/
padding-bottom:10px; /*下边框留空白*/
padding-left:10px; /*左边框留空白*/
margin-top:10px; /*上边界*/
margin-right:10px; /*右边界值*/
margin-bottom:10px; /*下边界值*/
margin-left:10px; /*左边界值*/

border-top : 1px solid #6699cc; /*上框线*/   
border-bottom : 1px solid #6699cc; /*下框线*/
border-left : 1px solid #6699cc; /*左框线*/
border-right : 1px solid #6699cc; /*右框线*/
solid /*实线框*/  dotted /*虚线框*/  double /*双线框*/  groove /*立体内凸框*/  ridge /*立体浮雕框*/
inset /*凹框*/  outset /*凸框*/
border-top-color : #369 /*设置上框线top颜色*/
border-top-width :1px /*设置上框线top宽度*/
border-top-style : solid/*设置上框线top样式*/

2. 字体属性

  • 大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX、PD
  • 样式 {font-style: oblique;}(偏斜体) italic;(斜体) normal;(正常)
  • 行高 {line-height: normal;}(正常) 单位:PX、PD、EM
  • 粗细 {font-weight: bold;}(粗体) lighter;(细体) normal;(正常)
  • 变体 {font-variant: small-caps;}(小型大写字母) normal;(正常)
  • 大小写 {text-transform: capitalize;}(首字母大写) uppercase;(大写) lowercase;(小写) none;(无)
  • 修饰 {text-decoration: underline;}(下划线) overline;(上划线) line-through;(删除线) blink;(闪烁)
  • 常用字体: font-family:“Courier New”, Courier, monospace, “Times New Roman”, Times, serif, Arial, Helvetica, sans-serif, Verdana
  • 字体颜色 {color:数值;}
  • 阴影颜色 {text-shadow:16位色值}
  • 水平对齐 {text-align:left|right|center|justify}; 垂直对齐 {vertical-align:inherit|top|bottom|text-top|text-bottom|baseline|middle|sub|super}
/* {font:font-style font-variant font-weight font-size font-family}*/
font: 18pt "TImes New Roman";
color : #999999; /*文字颜色*/

font-family : 宋体,sans-serif; /*文字字体*/

font-size : 9pt; /*文字大小*/

font-style:itelic; /*文字斜体*/

font-variant:small-caps; /*小字体*/

letter-spacing : 1pt; /*字间距离*/

line-height : 200%; /*设置行高*/

font-weight:bold; /*文字粗体*/

vertical-align:sub; /*下标字*/

vertical-align:super; /*上标字*/

text-decoration:line-through; /*加删除线*/

text-decoration: overline; /*加顶线*/

text-decoration:underline; /*加下划线*/

text-decoration:none; /*删除链接下划线*/

text-transform : capitalize; /*首字大写*/

text-transform : uppercase; /*英文大写*/

text-transform : lowercase; /*英文小写*/

text-align:right; /*文字右对齐*/

text-align:left; /*文字左对齐*/

text-align:center; /*文字居中对齐*/

text-align:justify; /*文字分散对齐*/

vertical-align属性

vertical-align:top; /*垂直向上对齐*/

vertical-align:bottom; /*垂直向下对齐*/

vertical-align:middle; /*垂直居中对齐*/

vertical-align:text-top; /*文字垂直向上对齐*/

vertical-align:text-bottom; /*文字垂直向下对齐*/

3. 背景属性

  • 色彩 {background-color: #FFFFFF;}
  • 图片 {background-image: url();}
  • 重复 {background-repeat: no-repeat;}
  • 滚动 {background-attachment: fixed;}(固定) scroll;(滚动)
  • 位置 {background-position: left;}(水平) top(垂直);
  • 简写方法 {background:#000 url(..) repeat fixed left top;}
background-color:#F5E2EC; /*背景颜色*/
background:transparent; /*透视背景*/
background-image : url(/image/bg.gif); /*背景图片*/
background-attachment : fixed; /*浮水印固定背景*/
background-repeat : repeat; /*重复排列-网页默认*/
background-repeat : no-repeat; /*不重复排列*/
background-repeat : repeat-x; /*在x轴重复排列*/
background-repeat : repeat-y; /*在y轴重复排列*/
background-position : 90% 90%; /*背景图片x与y轴的位置*/
background-position : top; /*向上对齐*/
background-position : buttom; /*向下对齐*/
background-position : left; /*向左对齐*/
background-position : right; /*向右对齐*/
background-position : center; /*居中对齐*/

4. 区块属性

  • 字间距 {letter-spacing: normal;} 数值
  • 对齐 {text-align: justify;}(两端对齐) left;(左对齐) right;(右对齐) center;(居中)
  • 缩进 {text-indent: 数值px;}
  • 垂直对齐 {vertical-align: baseline;}(基线) sub;(下标) super;(下标) top; text-top; middle; bottom; text-bottom;
  • 词间距word-spacing: normal; 数值
  • 空格white-space: pre;(保留) nowrap;(不换行)
  • 显示 {display:block;}(块) inline;(内嵌) list-item;(列表项) run-in;(追加部分) compact;(紧凑) marker;(标记) table; inline-table; table-raw-group; table-header-group; table-footer-group; table-raw; table-column-group; table-column; table-cell; table-caption;(表格标题)

5. 鼠标样式

链接手指 CURSOR: hand
十字体 cursor:crosshair
箭头朝下 cursor:s-resize
十字箭头 cursor:move
箭头朝右 cursor:move
加一问号 cursor:help
箭头朝左 cursor:w-resize
箭头朝上 cursor:n-resize
箭头朝右上 cursor:ne-resize
箭头朝左上 cursor:nw-resize
文字I型 cursor:text
箭头斜右下 cursor:se-resize
箭头斜左下 cursor:sw-resize
漏斗 cursor:wait

Resource

  • https://doc.qt.io/archives/qt-4.8/stylesheet.html
  • https://www.w3cschool.cn/css/css-border.html
  • style-sheet-usage:
  • https://github.com/892768447/PyQtUiLibrary

  • https://github.com/daodaoliang/NBaseUiKit pyqt 组件

  • https://github.com/TheOpenDevProject/QssUI

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94827.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于MOdel的自治交通模拟框架,用于故障-错误-故障链分析(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

二叠氮聚乙二醇,N3-PEG-N3,点击化学试剂简介 CAS 82055-94-5, Azide-PEG-Azide双边活性PEG衍生物

名称 二叠氮聚乙二醇 N3-PEG-N3 中文名称 叠氮PEG叠氮 聚乙二醇二叠氮 二叠氮聚乙二醇 英文名称 N3-PEG-N3 Azide-PEG-Azide CAS 82055-94-5 溶剂 溶于水和大部分有机溶剂 存储条件 -20读冷冻保存,惰性气体保护 N3-PEG-N3是一种双边活性PEG衍生物,可…

Ubuntu服务器Docker及常用库件安装

wshanshi:嗯…是从有道云笔记里弄出来的… 一、安装步骤 1.1、 检查并卸载已安装的docker $ sudo apt-get remove docker docker-engine docker.io containerd runc1.2、使用存储库安装 $ sudo apt-get update$ sudo apt-get install \apt-transport-https \ca-c…

[SCTF2019]Flag Shop (RUBY模板注入)

打开界面发现一个通过金钱来获得flag的,然后点击work或增加金钱但都是个位数 首先想了一下如果做一个脚本一直点击work不就好了吗,但是又想了一下服务器响应太快也不行,如果设置sleep那时间太长了 然后换一个思路,burp抓包看了一…

网络技术基础测试(一)

在一般布线中双绞线最长不可超过:100米网络拓扑图中路由器的图形为: Pv4地址由哪俩部分组成:网段地址和主机地址查询DNS域名信息的CMD命令为:NSLOOKUP关于局域网交换机,描述错误的是:用户可以有不同权限某…

Linux 性能分析工具大全

出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章。本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具…

12月编程语言排行榜公布!C+首超 Java

前言 日前,全球知名TIOBE编程语言社区发布了12月编程语言排行榜,有哪些新变化? C 首超 Java 和上个月相比,12 月榜单中最大的变化莫过于 C 以 0.12% 微弱的优势,凭借 11.94% 的市场份额首次超过了 11.82% 的 Java。…

重磅!阿里巴巴三入Java 全球管理组织执行委员会 龙蜥拥抱上游开源生态

近日,Java 全球管理组织 Java Community Process(以下简称 JCP)经过公平公正的投票,披露了入选最高执行委员会的成员名单,阿里巴巴作为唯一中国代表实现第三次连任。作为龙蜥社区理事长单位,阿里巴巴的此次…

“双重主要上市”潮流来袭,中通快递“赶时髦”意欲何为?

“双重主要上市”的风今年悄然在资本市场刮起。 7月26日,阿里巴巴申请将香港新增为主要上市地,7月27日,雷军的金山云递交了港股双重主要上市申请,据不完全统计,已有贝壳、小鹏、理想、知乎、B站等9家中概股公司&#…

20 个基础实用的 JavaScript 技巧

1.确定对象的数据类型 function myType(type) { return Object.prototype.toString.call(type).slice(8, -1); 使用Object.prototype.toString,通过传入不同类型的判断返回不同的判断函数,一行代码,简洁优雅灵活; 2.循环遍历数…

HylicOS --- 内存抽象

HylicOS已经完成了部分硬件抽象层的工作,包括MMU的初始化并对虚拟内存到物理内存做了映射,创建了页表目录。对串口进行了初始化,实现了printk格式化打印函数,方便了日志输出和程序调试。建立了异常向量表。 现在要做的是内存管理…

复方一枝蒿复合磷脂/IgG二性霉素B/阿糖胞苷修饰载甲氨喋呤/酶促合成半乳糖配体脂质体制备

小编今天为大家分享的科研知识是复方一枝蒿复合磷脂/IgG二性霉素B/阿糖胞苷修饰载甲氨喋呤/酶促合成半乳糖配体脂质体,一起来看! 点击输入图片描述(最多30字) 复方一枝蒿复合磷脂脂质体: 采用硫酸铵梯度法制备复方一枝…

gunicorn走私漏洞

gunicorn走私漏洞 源码:https://github.com/benoitc/gunicorn漏洞定位:https://github.com/benoitc/gunicorn/blob/20.x/gunicorn/http/message.py#142 漏洞分析 只要header里面存在Sec-Websocket-Key1 那么就将content_length强制赋值为8 比较简单直接…

【java】java JSR 269 自定义注解实战 Lombok @Data注解

1.概述 本节会演示一个实际的例子,使用JSR 269 API为类中的字段自动生成get、set 方法。首先定义一个自定义注解类Data,如下所示。 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import

智能工业之数据采集

现状 工业物联网飞速发展,但是相对于实时IT技术还是明显滞后的。个人理解,有两点原因:一是因为涉及的知识面也比较广,工业物联网开发成本比较高,不像做一个纯软件的管理系统,坐在电脑前借助开源框架就能完成…

你好,Ultrachess 里程碑更新了。

Cartesi Labs 资助的完全去中心化国际象棋项目即将来到你的面前。在10月,我们宣布了第一个由Cartesi Rollup 技术支持的完全链上国际象棋应用程序Ultrachess。Ultrachess允许用户将真正的价值放在赌注上,并在下棋时考虑的不仅仅是他们的隐藏分值。此外&…

Java中的StringBuilder类

目录 一、介绍 二、StringBuilder类的体系图 三、StringBuilder的常用方法 四、String、StringBuffer和StringBuilder比较 1、效率比较 2、如何选择? 一、介绍 StringBuilder也是lang包中的类,即java.lang.StringBuilder类。它也是一个可变的字符序…

设计模式原则-三-依赖倒转原则

设计模式原则---依赖倒转原则依赖倒转原则一 官方定义基本介绍二 案例演示普通方式实现**解决方案****案例分析****案例总结**依赖倒转原则方式实现**解决方案**案例分析**案例总结**注意事项&细节三 依赖关系传递方式一、通过接口传递二、通过构造方法传递三、通过set()方…

原来 Android 的 R 文件里还有这么多道道

前言 nonTransitiveRClass:非传递性 R 类的属性,在 gradle.properties 文件里使用。 不少开发者可能听过它,但了解可能仅限于是对 R 文件做了优化,甚至以为它可以解决资源冲突!但它到底做了什么优化、能否解决资源冲突…

Manacher算法

0、概括 Manacher算法用于求解字符串中最长回文子串问题。 Manacher算法的核心: 理解回文半径数组;理解所有中心的回文最右边界 R,和取得 R 时的中心点 C;理解 L...(i)...C...(i)...R 的结构,以及根据 i′ii′ 回文长…