【Qt-Qss-Style】
Qt编程指南
- ■ Qss
- ■ Style
- ■ setStyleSheet
- ■ style.qss
- ■ border
- ■ 去除弹框背景圆角
- ■ QProgressBar样式表
■ Qss
Qt 支持很多种常见
符号
“>”代表直属子部件,说明两个控件之间是父子关系。
“#”代表后面的字段是前面控件类型的名称,当然也可以省略控件类型直接写作#objectname这样.
. 表示当前的控件。
.QWidget //表示只设置当前的QWidget
{background-color:transparent;
}/*提示工具*/
/*提示窗口的背景*/
QWidget#ToolTipForm
{background-color:transparent;
}/*提示窗口的frame*/
QWidget#ToolTipForm>QFrame#frame
{background-color:#aaff7f;border:none;border-radius:20px;
}/*标签*/
QFrame#frame>QLabel#label
{background-color:transparent;color:#ffffff;font:14px,"宋体";
}//这样还没有达到完全的圆角窗口,窗口存在圆角下面的黑色方角,最关键的一步:需要在该提示工具的窗口类的构造函数中加入窗口无标题栏和背景透明的设置。
setAttribute(Qt::WA_TranslucentBackground);//设置背景透明
setWindowFlags(Qt::WindowTransparentForInput | Qt::ToolTip | Qt::FramelessWindowHint);//窗口仅用于输出,不接收任何输入事件
自定义类型中编写样式表。
QLabel{
color: rgb(255, 255, 255);
}
label->setFrameShape (QFrame::Box);
label->setStyleSheet("border-width: 1px;border-style: solid;border-color: rgb(255, 170, 0);");
setStyleSheet("QLabel{border:2px solid rgb(200, 200, 200);}");font: bold; 是否粗体显示
font-family:""; 来设定字体所属家族,
font-size:20px; 来设定字体大小
font-style: nomal; 来设定字体样式
font-weight:20px; 来设定字体深浅
color:black ;字体颜色border: 1px solid gray;边框大小,样式,颜色
border-image:""; 用来设定边框的背景图片。
border-radius:5px; 用来设定边框的弧度。可以设定圆角的按钮
border-width: 1px; 边框大小 background-color: green; 设置背景颜色
background:transparent; 设置背景为透明
color:rgb(241, 70, 62); 设置前景颜色
selection-color:rgb(241, 70, 62); 用来设定选中时候的颜色
■ Style
■ setStyleSheet
btn->setStyleSheet(background-color:rgb(41,176,204);color:white;border:none;border-radius:1px;);//设置按钮样式
QStringList list;
//list << QString("QAbstractSpinBox{border:2px solid #7C7C96;background:#FF0000;})";
list << QString("QPushButton{min-width:%1px;max-width:%1px;min-height:%1px;max-height:%1px;}").arg(btnSize);
list << QString("QPushButton{border-image:url(:/image/ycontrol/spinBoxButton_normal.png);}");
list << QString("QPushButton:pressed{border-image:url(:/image/ycontrol/spinBoxButton_select.png);}");
list << QString("#qt_spinbox_btnDown{image:url(:/image/ycontrol/spinBoxButton_normal_minus.png)}");
list << QString("#qt_spinbox_btnDown:pressed{image:url(:/image/ycontrol/spinBoxButton_select_minus.png)}");
list << QString("#qt_spinbox_btnUp{image:url(:/image/ycontrol/spinBoxButton_normal_plus.png)}");
list << QString("#qt_spinbox_btnUp:pressed{image:url(:/image/ycontrol/spinBoxButton_select_plus.png)}");
this->setStyleSheet(list.join(""));示例一:
QRadioButton{spacing: 2px;color: white;
}
QRadioButton::indicator {width: 45px;height: 30px;
}
QRadioButton::indicator:unchecked {image: url(:/images/switch_off.png);
}
QRadioButton::indicator:checked {image: url(:/images/switch_on.png);
}
int main(int argc, char *argv[])
{QApplication a(argc, argv);/* 指定文件 */QFile file(":/style.qss");/* 判断文件是否存在 */if (file.exists() ) {/* 以只读的方式打开 */file.open(QFile::ReadOnly);/* 以字符串的方式保存读出的结果 */QString styleSheet = QLatin1String(file.readAll());/* 设置全局样式 */qApp->setStyleSheet(styleSheet);/* 关闭文件 */file.close();}MainWindow w;w.show();return a.exec();
}
■ style.qss
QListWidget {
font-size: 30px;
outline:none;
}QListWidget::item:active {
background: transparent;
}QListWidget::item {
height:80;
}QListWidget::item:selected:hover {
background:#22222222;
}QListWidget::item:selected {
background:transparent;
color:#ee222222;
}1、首先是实现插入项的功能,也就是新增一项
void Widget::on_InsertBtn_clicked()
{//首先是获取项的总数int itemCount = ui->listWidget->count();//new一个空的子项QListWidgetItem * item = new QListWidgetItem;//初始化空的子项,比如设置颜色,高度,内容等等//设置大小item->setSizeHint(QSize(ui->listWidget->width(),50));//设置内容item->setText(QString("自定义子项%1").arg(itemCount));//设置属性item->setFlags(Qt::ItemIsEditable|Qt::ItemIsEnabled|Qt::ItemIsUserCheckable);//双击可被编辑,可选中item->setCheckState(Qt::Unchecked);//默认 不选中状态//最后将初始化好的子项插入到listWidget控件中ui->listWidget->addItem(item);
}2、删除项,删除当前选中的项,代码如下:
void Widget::on_DelBtn_clicked()
{//先判断当前是否选中,如果没有选中则提示if(!ui->listWidget->currentItem()){QMessageBox::warning(this,"警告","请先选中当前项再进行删除!");return;}//获取当前想要删除的子项QListWidgetItem * delItem = ui->listWidget->takeItem(ui->listWidget->currentRow());if(delItem)//注意需要手动删除delete delItem;
}3、清空列表,调用clear()函数即可。
void Widget::on_ClearBtn_clicked()
{ui->listWidget->clear();
}
4、状态栏的显示
void Widget::on_listWidget_currentRowChanged(int currentRow)
{//如果没有子项,直接退出if(currentRow<0)return;//获取当前项QListWidgetItem *curItem = ui->listWidget->currentItem();//获取内容QString curText = curItem->text();//在状态栏进行显示内容和选中状态QString stateText;stateText = (QString("当前选中第%1项:").arg(currentRow)+curText);if(curItem->checkState() == Qt::Checked)stateText += " 选中";elsestateText += " 没有选中";ui->StateLabel->setText(stateText);
}
5、排序ui->listWidget->setSortingEnabled(true);//生效排序ui->listWidget->sortItems(Qt::DescendingOrder); //降序6、显示方式ui->listWidget->setViewMode(QListView::IconMode);7、初始化
void Widget::InitListwidget()
{//自定义菜单策略ui->listWidget->setContextMenuPolicy(Qt::CustomContextMenu);//设置视图显示方式为图标模式(图标在上,文字在下)ui->listWidget->setViewMode(QListView::IconMode);//设置可以选择多项ui->listWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);//设置背景颜色,使每个子项之间的间距有颜色区别//ui->listWidget->setStyleSheet("background:transparent;");//设置无边框ui->listWidget->setFrameShape(QFrame::NoFrame);//设置子项不能被拖拽ui->listWidget->setDragEnabled(false);//设置子项每个图标的大小ui->listWidget->setIconSize(QSize(200,200));//设置每个子项的大小固定ui->listWidget->setUniformItemSizes(true);//设置QLisView大小改变时,图标的调整模式,默认是固定的,可以改成自动调整ui->listWidget->setResizeMode(QListView::Adjust);//设置每个子项之间的间距ui->listWidget->setSpacing(10);//设置样式,直接在函数中设置ui->listWidget->setStyleSheet("QListWidget{border:1px solid gray; color:black;background:transparent;}""QListWidget::Item{padding-top:20px; padding-bottom:4px; }""QListWidget::Item:hover{background:skyblue; }""QListWidget::item:selected{background:lightgray; color:red; }""QListWidget::item:selected:!active{border-width:0px; background:lightgreen; }");}
注意点:
int n=ui->listWidget->count();//获取item的总数
//删去所有item
for(int i=0;i<n;i++)
{/*使用takeItem(row)函数将QListWidget中的第row个item移除,移除需要使用delete手动释放其在堆上占用的空间*/ //这里是0,不是i,因为每移除一个item都会导致每个item的row发生变化QListWidgetItem *item = ui->listWidget->takeItem(0); delete item;
}QListWidgetItem* item = ui->listWidget->currentItem();//被选中或背点击的item删除
// QListWidgetItem* item = ui->listWidget->takeItem(2);//指定删除
ui->listWidget->removeItemWidget(item);
delete item;
■ border
color:rgb(255, 255, 255);
border: 1px solid gray;
border-style:solid;
border-radius:5px;
border-top-left-radius:2px;
border-top-right-radius:2px;
border-bottom-left-radius: 20px;
border-bottom-right-radius: 20px;
border-top-left-radius:2px;
border-top-right-radius:2px; border:0px;
border-left:1px solid rgba(82,130,164,1);
border-right:1px solid rgba(82,130,164,1);
border-top:1px solid rgba(82,130,164,1);
border-bottom:1px solid rgba(82,130,164,1);background:rgba(17,24,47,1);
border:0px;
border-left:1px solid rgba(82,130,164,1);
border-right:1px solid rgba(82,130,164,1);
border-top:1px solid rgba(82,130,164,1);}"
border-bottom:1px solid rgba(82,130,164,1);
■ 去除弹框背景圆角
dialog->setModal(true); //父窗口不能点击。
setWindowFlag(Qt::FramelessWindowHint); // 设置去除标题栏 无框窗提示QFrame 支持圆角设置风格
有白色的角
setAttribute(Qt::WA_TranslucentBackground); //设置背景透明;
■ QProgressBar样式表
QProgressBar { border: 2px solid grey; border-radius: 5px; background-color: #FFFFFF;
}
QProgressBar::chunk { border-radius: 5px;background-color: #05B8CC; width: 20px;
}QProgressBar { border: px solid grey; border-radius: 5px; text-align: center;
}
QProgressBar::chunk{border-radius: 5px;background:qlineargradient(spread:pad,x1:0,y1:0,x2:1,y2:0,stop:0 red,stop:1 blue);
}第一步:
height:30;
background: red;
color:rgb(255,255,0);第二步:
border:1px solid #FFFFFF;
height:30;
background: red;
color:rgb(255,255,0);第三步:
border:1px solid #FFFFFF;
height:30;
background: red;
text-align: center; // 控制文本位置left center right
color:rgb(255,255,0);
border-radius:10px;第四步:添加斑马线。
QProgressBar{
border:1px solid #FFFFFF;""height:30;""background:red;""text-align:center;""color:rgb(255,255,0);""border-radius:10px;}""QProgressBar::chunk{""border-radius:5px;" // 斑马线圆角"border:1px solid black;" // 黑边,默认无边"background-color:skyblue;""width:8px;margin:0.5px;
}第五步:
QProgressBar::chunk{
border-radius: 5px;
background:qlineargradient(spread:pad,x1:0,y1:0,x2:1,y2:0,stop:0 red,stop:1 blue);
}
相关文章:
【Qt-Qss-Style】
Qt编程指南 ■ Qss■ Style■ setStyleSheet ■ style.qss■ border■ 去除弹框背景圆角■ QProgressBar样式表 ■ Qss Qt 支持很多种常见 符号 “>”代表直属子部件,说明两个控件之间是父子关系。 “#”代表后面的字段是前面控件类型的名称,当然也可…...
基于yolov8,制作停车位计数器(附源码)
大家好,YOLO(You Only Look Once) 是由Joseph Redmon和Ali开发的一种对象检测和图像分割模型。 YOLO的第一个版本于2015年发布,由于其高速度和准确性,瞬间得到了广大AI爱好者的喜爱。 Ultralytics YOLOv8则是一款前沿、最先进(SOTA)的模型&a…...
C++设计模式:单例模式(饿汉式、懒汉式)
单例模式是什么? 单例模式是一种创建型的软件设计模式。通过单例模式的设计,使得创建的类在当前进程中只有唯一一个实例,并提供一个全局性的访问点,这样可以规避因频繁创建对象而导致的内存飙升情况。 单例模式有三个要点 私有化…...
Django 访问前端页面一直在转异常:ReferenceError:axios is not defined
访问:http://127.0.0.1:8080/ my.html 一、异常: 二、原因 提示:axios找不到!! 查看代码<script src"https://unpkg.com/axios/dist/axios.min.js"></script>无法访问到官网 三、解决 Using j…...
C语言中关于指针的理解
#include <stdio.h> int main() {int a11;int *p&a; //因为a是整型的,所以我们定义指针p的时候要和a的类型一样char b;char *pa&b; //同理,b是字符型,所以这里的pa也要用字符型return 0; }因为*p指向的是地址&…...
MySQL MVCC精讲
版本链 我们前面说过,对于使用InnoDB存储引擎的表来说,它的聚簇索引记录中都包含两个必要的隐藏列(row_id并不是必要的,我们创建的表中有主键或者非NULL的UNIQUE键时都不会包含row_id列): trx_idÿ…...
如何快速删除pdf周围的空白
问题:写论文往往需要pdf格式的图片,但pdf往往四周存在大量空白需要手动截图很麻烦 解决: 打开命令行输入:pdfcrop 图片名.pdf...
蓝桥杯c/c++程序设计——数位排序
数位排序【第十三届】【省赛】【C组】 题目描述 小蓝对一个数的数位之和很感兴趣,今天他要按照数位之和给数排序。 当两个数各个数位之和不同时,将数位和较小的排在前面,当数位之和相等时,将数值小的排在前面。 例如࿰…...
【通讯录案例-搭建登录界面 Objective-C语言】
一、来看我们这个通讯录案例 1.接下来啊,我们来做这个通讯录案例, 然后呢,做这么一个应用程序啊, 我们第一步呢,先把界面儿搭了, 然后呢,搭之前,简单的来分析一下, 首先呢,这是,中间儿的这一块儿, 1)有个“账户”、“密码”,这一块儿, 这是一个什么控制器,…...
二叉搜索树、AVL、红黑树、B树
文章目录 二叉搜索树2. avl树3. 红黑树 b树和b树比较适合与磁盘打交道的,磁盘操作耗时,这些树 矮,红黑树、avL树高,比较适合与内存打交道。 二叉搜索树 找一个节点的前驱和后继: 前驱:如果节点有左子树&a…...
格密码:傅里叶矩阵
目录 一. 铺垫性介绍 1.1 傅里叶级数 1.2 傅里叶矩阵的来源 二. 格基与傅里叶矩阵 2.1 傅里叶矩阵详细解释 2.2 格基与傅里叶矩阵 写在前面:有关傅里叶变换的解释太多了,这篇博客主要总结傅里叶矩阵在格密码中的运用。对于有一定傅里叶变换基础的同…...
flex--伸缩性
1.flex-basis flex-basis 设置的是主轴方向的基准长度,会让宽度或高度失效。 备注:主轴横向:宽度失效;主轴纵向:高度失效 作用:浏览器根据这个属性设置的值,计算主轴上是否有多余空间&#x…...
linux中主从复制的架构和读写分离的方式
读写分离 互相主从架构注意点 双主双从架构注意点 一主多从架构注意点 读写分离概念部署jdk环境上传文件,解压文件配置环境变量 部署mycat环境mycat配置文件给所有数据库创建访问用户配置 server.xml配置 schema.xml启动mycat查看启动端口日志负载均衡测试 遇到的问…...
Ubuntu 22.04.3 Server 设置静态IP 通过修改yaml配置文件方法
目录 1.查看网卡信息 2.修改yaml配置文件 3.应用新的网络配置 4.重新启动网络服务 文章内容 本文介绍Ubuntu 22.04.3 Server系统通过修改yaml配置文件配置静态 ip 的方法。 1.查看网卡信息 使用ifconfig命令查看网卡信息获取网卡名称 如果出现Command ifconfig not fo…...
EasyCVR无人机推流+人数统计AI算法,助力公共场所人群密度管控
一、背景与需求 在公共场所和大型活动的管理中,人数统计和人群密度控制是非常重要的安全问题。传统的方法可能存在效率低下或准确度不足的情况,无法满足现代社会的需求。TSINGSEE青犀可以利用无人机推流AI人流量统计算法,基于计算机视觉技术…...
Kotlin 接口
Kotlin 的接口可以既包含抽象方法的声明也包含实现;接口无法保存状态;可以有属性但必须声明为抽象或提供访问器实现 1、定义 使用关键字 interface 来定义接口 interface MyInterface {fun bar()fun foo() {// 可选的方法体} } 2、 实现接口 一个类…...
Qt前端技术:5.QSS
这个是表示QFrame中的pushButton中的子类和它子类的子类都将背景变为red 写成大于的时候表示只有直接的子类对象才会变 这个图中的QGroupBox和QPushButton都是QFrame的直接的子类 这个中的QGroupBox是QFrame的直接的子类但是QPushButton 是QGroupBox的子类,QPushB…...
在Centos7中利用Shell脚本:实现MySQL的数据备份
目录 自动化备份MySQL 一.备份数据库脚本 1.创建备份目录 2.创建脚本文件 3.新建配置文件(连接数据库的配置文件) 4.给文件权限(mysql_backup.sh) 编辑 5.执行命令 (mysql_backup.sh) 编辑 二.数据库通过备份恢复 1.创建脚…...
大一C语言查缺补漏 12.24
遗留问题: 6-1 1 在C语言中,如果要保留小数的话,一定要除以2.0,而不是2。 设整型变量m,n,a,b的值均为1,执行表达式(m a>b)||(n a<b)后,表达式的值以及变量m和n的值是&#…...
程序员宝典:常用的免费好物API
六位图片验证码生成:包括纯数字、小写字母、大写字母、大小写混合、数字小写、数字大写、数字大小写等情况。 四位图片验证码生成:四位图片验证码生成,包括纯数字、小写字母、大写字母、大小写混合、数字小写、数字大写、数字大小写等情况。…...
【STM32】幻尔16路舵机控制板串口协议解析与实战编程
1. 幻尔16路舵机控制板基础认知 第一次拿到幻尔16路舵机控制板时,我盯着密密麻麻的接口有点发懵。这块巴掌大的绿色电路板,居然能同时控制16个舵机?经过半年多的项目实战,我可以负责任地说:这绝对是多舵机项目的开发神…...
Vite多入口页面配置实战:从单页应用到多页项目的平滑升级指南
Vite多入口页面配置实战:从单页应用到多页项目的平滑升级指南 当你已经用Vite构建了一个优雅的单页应用,突然业务需求要求你扩展为多页项目时,是否感到手足无措?别担心,这种架构演进在项目成长过程中再常见不过了。作为…...
不露脸也能当主播?一文了解VTuber
不露脸也能当主播?一文了解VTuber很多人提到 VTuber,脑子里就是“二次元纸片人”在直播间卖萌。 但其实,你每天换的微信头像、用过的苹果拟我表情,短视频平台的3D头套全都是它的“远房亲戚”。 今天我们就把这层科技外衣扒开&…...
douyin-downloader完全指南:音频高效提取的创新方法
douyin-downloader完全指南:音频高效提取的创新方法 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support…...
揭秘冷轧精密带钢DC03-C340:3大核心特性如何赋能精密制造?
朋友们,今天咱们不聊虚的,就聊聊工厂车间里最实在的东西——材料。你是不是也遇到过这样的烦心事:花大价钱买回来的钢带,一上冲床就开裂,废品率居高不下;或者热处理后表面出现诡异的蓝线,抛光怎…...
linux系统中简单统计java项目代码行数信息
新建脚本文件(最好在项目根目录下):count_java.shvi count_java.sh编辑内容:按一下键盘上的i键,屏幕左下角会出现 -- INSERT --,输入一下内容: #!/bin/bash find . -name "*.java" -p…...
YOLO12应用场景:零售货架识别中商品计数+品类分类一体化方案
YOLO12应用场景:零售货架识别中商品计数品类分类一体化方案 1. 引言:零售货架管理的痛点与新解法 如果你经营过一家便利店、超市,或者负责过零售门店的运营,一定对“货架盘点”这件事深有感触。每到月底或者需要补货时ÿ…...
【笔试真题】- 招商银行-2026.03.30
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围在线刷题 bishipass.com 招商银行-2026.03.30 1. 术语接龙计分 问题描述 招商银行的培训平台里有一个简化版“术语接龙”小游戏。 系统维护了一份单词表,并给定一个当前单词。用户之…...
7自由度开源机械臂:如何用6500美元构建AI研究新范式?
7自由度开源机械臂:如何用6500美元构建AI研究新范式? 【免费下载链接】openarm A fully open-source humanoid arm for physical AI research and deployment in contact-rich environments. 项目地址: https://gitcode.com/GitHub_Trending/op/openar…...
数组运算18题:从递归求和解到Kadane算法
1. 数组运算进阶指南:18道经典题目深度解析数组作为最基本的数据结构,在编程面试和实际开发中无处不在。掌握数组的各种运算技巧不仅能帮助你在面试中脱颖而出,更能提升日常编码的效率和质量。本文将深入解析18个经典的数组运算题目ÿ…...
