当前位置: 首页 > news >正文

【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 支持很多种常见 符号 “>”代表直属子部件&#xff0c;说明两个控件之间是父子关系。 “#”代表后面的字段是前面控件类型的名称&#xff0c;当然也可…...

基于yolov8,制作停车位计数器(附源码)

大家好&#xff0c;YOLO(You Only Look Once) 是由Joseph Redmon和Ali开发的一种对象检测和图像分割模型。 YOLO的第一个版本于2015年发布&#xff0c;由于其高速度和准确性&#xff0c;瞬间得到了广大AI爱好者的喜爱。 Ultralytics YOLOv8则是一款前沿、最先进(SOTA)的模型&a…...

C++设计模式:单例模式(饿汉式、懒汉式)

单例模式是什么&#xff1f; 单例模式是一种创建型的软件设计模式。通过单例模式的设计&#xff0c;使得创建的类在当前进程中只有唯一一个实例&#xff0c;并提供一个全局性的访问点&#xff0c;这样可以规避因频繁创建对象而导致的内存飙升情况。 单例模式有三个要点 私有化…...

Django 访问前端页面一直在转异常:ReferenceError:axios is not defined

访问&#xff1a;http://127.0.0.1:8080/ my.html 一、异常&#xff1a; 二、原因 提示&#xff1a;axios找不到&#xff01;&#xff01; 查看代码<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是整型的&#xff0c;所以我们定义指针p的时候要和a的类型一样char b;char *pa&b; //同理&#xff0c;b是字符型&#xff0c;所以这里的pa也要用字符型return 0; }因为*p指向的是地址&…...

MySQL MVCC精讲

版本链 我们前面说过&#xff0c;对于使用InnoDB存储引擎的表来说&#xff0c;它的聚簇索引记录中都包含两个必要的隐藏列&#xff08;row_id并不是必要的&#xff0c;我们创建的表中有主键或者非NULL的UNIQUE键时都不会包含row_id列&#xff09;&#xff1a; trx_id&#xff…...

如何快速删除pdf周围的空白

问题&#xff1a;写论文往往需要pdf格式的图片&#xff0c;但pdf往往四周存在大量空白需要手动截图很麻烦 解决&#xff1a; 打开命令行输入&#xff1a;pdfcrop 图片名.pdf...

蓝桥杯c/c++程序设计——数位排序

数位排序【第十三届】【省赛】【C组】 题目描述 小蓝对一个数的数位之和很感兴趣&#xff0c;今天他要按照数位之和给数排序。 当两个数各个数位之和不同时&#xff0c;将数位和较小的排在前面&#xff0c;当数位之和相等时&#xff0c;将数值小的排在前面。 例如&#xff0…...

【通讯录案例-搭建登录界面 Objective-C语言】

一、来看我们这个通讯录案例 1.接下来啊,我们来做这个通讯录案例, 然后呢,做这么一个应用程序啊, 我们第一步呢,先把界面儿搭了, 然后呢,搭之前,简单的来分析一下, 首先呢,这是,中间儿的这一块儿, 1)有个“账户”、“密码”,这一块儿, 这是一个什么控制器,…...

二叉搜索树、AVL、红黑树、B树

文章目录 二叉搜索树2. avl树3. 红黑树 b树和b树比较适合与磁盘打交道的&#xff0c;磁盘操作耗时&#xff0c;这些树 矮&#xff0c;红黑树、avL树高&#xff0c;比较适合与内存打交道。 二叉搜索树 找一个节点的前驱和后继&#xff1a; 前驱&#xff1a;如果节点有左子树&a…...

格密码:傅里叶矩阵

目录 一. 铺垫性介绍 1.1 傅里叶级数 1.2 傅里叶矩阵的来源 二. 格基与傅里叶矩阵 2.1 傅里叶矩阵详细解释 2.2 格基与傅里叶矩阵 写在前面&#xff1a;有关傅里叶变换的解释太多了&#xff0c;这篇博客主要总结傅里叶矩阵在格密码中的运用。对于有一定傅里叶变换基础的同…...

flex--伸缩性

1.flex-basis flex-basis 设置的是主轴方向的基准长度&#xff0c;会让宽度或高度失效。 备注&#xff1a;主轴横向&#xff1a;宽度失效&#xff1b;主轴纵向&#xff1a;高度失效 作用&#xff1a;浏览器根据这个属性设置的值&#xff0c;计算主轴上是否有多余空间&#x…...

linux中主从复制的架构和读写分离的方式

读写分离 互相主从架构注意点 双主双从架构注意点 一主多从架构注意点 读写分离概念部署jdk环境上传文件&#xff0c;解压文件配置环境变量 部署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算法,助力公共场所人群密度管控

一、背景与需求 在公共场所和大型活动的管理中&#xff0c;人数统计和人群密度控制是非常重要的安全问题。传统的方法可能存在效率低下或准确度不足的情况&#xff0c;无法满足现代社会的需求。TSINGSEE青犀可以利用无人机推流AI人流量统计算法&#xff0c;基于计算机视觉技术…...

Kotlin 接口

Kotlin 的接口可以既包含抽象方法的声明也包含实现&#xff1b;接口无法保存状态&#xff1b;可以有属性但必须声明为抽象或提供访问器实现 1、定义 使用关键字 interface 来定义接口 interface MyInterface {fun bar()fun foo() {// 可选的方法体} } 2、 实现接口 一个类…...

Qt前端技术:5.QSS

这个是表示QFrame中的pushButton中的子类和它子类的子类都将背景变为red 写成大于的时候表示只有直接的子类对象才会变 这个图中的QGroupBox和QPushButton都是QFrame的直接的子类 这个中的QGroupBox是QFrame的直接的子类但是QPushButton 是QGroupBox的子类&#xff0c;QPushB…...

在Centos7中利用Shell脚本:实现MySQL的数据备份

目录 自动化备份MySQL 一.备份数据库脚本 1.创建备份目录 2.创建脚本文件 3.新建配置文件&#xff08;连接数据库的配置文件&#xff09; 4.给文件权限(mysql_backup.sh) ​编辑 5.执行命令 (mysql_backup.sh) ​编辑 二.数据库通过备份恢复 1.创建脚…...

大一C语言查缺补漏 12.24

遗留问题&#xff1a; 6-1 1 在C语言中&#xff0c;如果要保留小数的话&#xff0c;一定要除以2.0&#xff0c;而不是2。 设整型变量m,n,a,b的值均为1&#xff0c;执行表达式&#xff08;m a>b&#xff09;||(n a<b)后&#xff0c;表达式的值以及变量m和n的值是&#…...

程序员宝典:常用的免费好物API

六位图片验证码生成&#xff1a;包括纯数字、小写字母、大写字母、大小写混合、数字小写、数字大写、数字大小写等情况。 四位图片验证码生成&#xff1a;四位图片验证码生成&#xff0c;包括纯数字、小写字母、大写字母、大小写混合、数字小写、数字大写、数字大小写等情况。…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程&#xff08;限时至2025/5/15&#xff09; Oracle AI Vector Search 1Z0-184-25考试&#xff0c;都顺利拿到certified了没。 各行各业的AI 大模型的到来&#xff0c;传统的数据库中的SQL还能不能打&#xff0c;结构化和非结构的话数据如何和…...