Qt中QSS的简单使用

2023-05-16

样式表的组成

样式表由两大元素组成:选择器和声明。选择器实际上可以理解为对象,声明则是对该对象的属性的设置。

样式表的使用

方法一:在代码中调用setStyleSheet()来设置样式;
方法二:通过加载qss文件来设置样式。

样式表的简单使用介绍

setStyleSheet()的简单应用:
【1】通过QApplication的对象调用;
(1)创建QSS文件——myqss.qss;
创建文本文件,存入源文件所在的同级目录下,修改其文件名为myqss.qss。
(2)用QtCreate打开该工程,在项目名上右键点击添加新文件,选择Qt资源文件,按照提示创建资源文件;
(3)在创建的资源文件上右键选择添加前缀,之后添加该项目所用到的资源文件,即图片,添加之后保存;
(4)在main.cpp文件中添加如下代码。

#include <QApplication>
#include <QFile>
int main(int argc,char *argv[])
{
	QApplication app(argc,argv);
	QFile file(".\myqss.qss");/*QSS文件所在的路径*/
	file.open(QIODevice::ReadOnly);
	if(file.isOpen())
	{
		QString strFile = file.readAll();
		app.setStyleSheet(strFile);
		file.close();/*记得关闭QSS文件*/
	}
	return app.exec();
}

备注:
此方法通过在主函数中读取QSS文件,来设置界面的样式,可以将整个项目中各界面对应的样式设置都都在一个QSS文件下

qss文件的大体介绍

  1. 只有一个界面的QSS文件
    内容形式:控件类名#objectName{ … }
    如只有一个界面,界面上有一个QPushButton控件,在其对应的qss文件中可以编写其内容为下:
/*创建应用程序,基类为QWidget,在其ui文件中将QWidget的objectName更改为WidgetPainter,拖入控件QPushButton将其ObjectName更改为pushButtonPainter,现在qss文件中设置按钮的样式,按钮未被点击的状态和按钮被点击的状态*/
/*画笔未被点击*/
QWidget#WidgetPainter>QPushButton#pushButtonPainter{
	background-color:transparent;
	image:url(:/image/painterUnchecked.png);
}

/*画笔被点击*/
QWidget#WidgetPainter>QPushButton#pushButtonPainter:pressed{
	background-color:transparent;
	image:url(:/image/painterChecked.png);
}

因为整个应用程序只有一个界面,可以将整个项目中所有控件的样式设置都写到一个qss文件中,在main函数中加载qss文件,给界面设置样式。
2. 多界面的QSS文件
可以将每一个界面写一个qss文件,然后在各界面对应的类中的构造函数里加载qss文件;也可以将所有界面的样式设置写到一个qss文件中,在main函数中加载qss文件。

/*将信号源名字界面与系统设置界面的样式设置写道同一个qss文件中,对于部件间关系的归属必须锊清,否则会达不到预想的界面效果,下面是在一个QWidget(objectName为SignalSource)上拖入一个QWidget(objectName为widget_title),再在objectName为widget_title的QWidget上拖入标签QLabel和按钮QPushButton,即QLabel和QPushButton为widget_title的直接子部件,widget_title为SignalSource的直接子部件,之间子部件之间使用>,控件类与控件的名称之间使用#,*/
/***************************信号源名字子页面**************/
/*页面的背景*/
QWidget#SignalSource{
	background-color:#FF2D3274;
}

/*页面标题栏*/
QWidget#SignalSource>QWidget#widget_title{
	background-color:#FF262B63;
}

/*信号源的名字*/
QWidget#widget_title>QLabel#label_name{
    color: rgb(255, 255, 255);
	font-size:16px;
	font-family:Microsoft YaHei;
}

/*控制按钮*/
QWidget#widget_title>QPushButton#pushButton_control{
	background-color:transparent;
	image:url(:/new/prefix1/images/contrl.png);
	border-style:flat;
}


/*控制按钮被点击状态*/
QWidget#widget_title>QPushButton#pushButton_control:checked{
	image:url(:/new/prefix1/images/finishControl.png);
}


/*上屏按钮*/
QWidget#widget_title>QPushButton#pushButton_upscr{
	background-color:transparent;
	image:url(:/new/prefix1/images/upsrc.png);
	border-style:flat;
}

/*上屏按钮被点击状态*/
QWidget#widget_title>QPushButton#pushButton_upscr:checked{
	image:url(:/new/prefix1/images/downscr.png);
}


/*设置按钮*/
QWidget#widget_title>QPushButton#pushButton_set{	
	background-color:transparent;
	image:url(:/new/prefix1/images/seting.png);
	border-style:flat;
}

/*设置按钮鼠标按下状态*/
QWidget#widget_title>QPushButton#pushButton_set:checked{
	image:url(:/new/prefix1/images/seting2.png);
}


/*全屏按钮*/
QWidget#widget_title>QPushButton#pushButton_fullscr{
	background-color:transparent;
	image:url(:/new/prefix1/images/fullscr.png);
	border-style:flat;
}

/*全屏按钮鼠标按下状态*/
QWidget#widget_title>QPushButton#pushButton_fullscr:checked{
	image:url(:/new/prefix1/images/fullsrc2.png);
}


/*******************系统设置****************/
/*整体窗口背景#FF2E3274*/
QDialog#SystemSet{
	background-color:#FF2E3274;	
/*	box-shadow: 0px 0px 40px 0px rgba(0, 0, 0, 0.1);*/
	border-radius: 5px 5px 5px 5px;
}

/*窗体头背景*/
QDialog#SystemSet>QWidget#widget_title{
	background-color:#FF262B63;
}

/*系统设置标题*/
QWidget#widget_title>QLabel#label_title{
	color:#FFFFFFFF;
	font-family:MicrosoftYaHei;
	font-size:16px;
}

/*系统设置图标*/
QWidget#widget_title>QLabel#label_sysSet{
	background-color:transparent;
	image:url(:/new/prefix1/images/sysset.png);
}

/*默认设置按钮*/
QWidget#widget_title>QPushButton#pushButton_defaultset{
	color:#FFFFFFFF;
	font-family:MicrosoftYaHei;
	font-size:16px;	
	background-color:#FF282C66;
	border-top-left-radius:5px;
	border-top-right-radius:5px;
	border-style:flat;
}

/*默认设置按钮被点击*/
QWidget#widget_title>QPushButton#pushButton_defaultset:pressed{
	color:#FFFFFFFF;
	background-color:#FF008AFF;
	font-family:MicrosoftYaHei;
	font-size:16px;
}

/*默认设置按钮旁边白线*/
QWidget#widget_title>QLabel#label1{
	background-color:#FFFFFF;	
	border-radius: 1px;	
	opacity: 0.5;
}

/*高级设置按钮*/
QWidget#widget_title>QPushButton#pushButton_advanceset{
	color:#FFFFFFFF;
	font-family:MicrosoftYaHei;
	font-size:16px;	
	background-color: #FF282C66;
	border-top-left-radius:5px;
	border-top-right-radius:5px;
	border-style:flat;
}

/*高级设置按钮被点击*/
QWidget#widget_title>QPushButton#pushButton_advanceset:pressed{
	color:#FFFFFFFF;
	background-color:#FF008AFF;
	font-family:MicrosoftYaHei;
	font-size:16px;
}

/*高级设置按钮旁边白线*/
QWidget#widget_title>QLabel#label2{
	background-color:#FFFFFF;	
	border-radius: 1px;	
	opacity: 0.5;
}

/*ip设置按钮*/
QWidget#widget_title>QPushButton#pushButton_ipset{
	color:#FFFFFFFF;
	font-family:MicrosoftYaHei;
	font-size:16px;	
	background-color: #FF282C66;	
	border-top-left-radius:5px;
	border-top-right-radius:5px;
	border-style:flat;
}

/*ip设置按钮被点击*/
QWidget#widget_title>QPushButton#pushButton_ipset:pressed{
	color:#FFFFFFFF;
	background-color:#FF008AFF;
	font-family:MicrosoftYaHei;
	font-size:16px;
}

QWidget>QPushButton#pushButton_close{
	background-color:transparent;
	image:url(:/new/prefix1/images/close.png);
}

以上是对QSS使用过程中的一些简单的总结。涉及更多的内容还需自己挖掘,个人理解在多界面共用一个qss文件时,部件之间关系十分重要。
在使用图片作为整个界面的背景图片时,需要在QWidget中拖入一个QWidget,在拖入的QWidget中设置背景透明,背景图片,并且需要将整个界面的QWidget设置为透明,无标题,否则达不到想要的效果
如下面的qss文件中所写:

/*提示窗口的整体需要加载一张图片,先在QDialog中拖入控件QWidget(objectName为widget),在程序设置QDialog的没有标题和背景透明,在qss文件中编写widget背景透明,加载背景图片*/
/****************通知提示窗口*************/
/*界面的整体背景rgba(0,255,255,255)*/
QDialog#InformDialog>QWidget#widget{	
	background-color:transparent;
	background-image:url(:/new/prefix1/images/informbackground.png);
}

image,backgroun-image,border-image的区别,image的不会改变图片的大小,不会拉伸和压缩图片,backgroun-image一般用于整个控件的背景图片,无法随部件的大小自动缩放,border-image为可以随部件的大小自动缩放

子部件的样式设置

控件的子控件设置样式简单的贴一些自己之前做过的,更多还需自己学习。

/*QComboBox控件的子部件的简单设置下拉的界面,下拉界面每一项,下拉按钮的样式,QSpinBox,QCheckBox,QRadioButton子部件的设置*/
/*下拉按钮*/
QWidget#systemdefaltSet>QComboBox{	
	background-color: #121650;
	border-radius: 6px;
	font-size: 14px;
	font-family: Microsoft YaHei;
	font-weight: 400;
	color: #FFFFFF;
}

/*下拉按钮*/
QWidget#systemdefaltSet>QComboBox::down-arrow{	
	image:url(:/new/prefix1/image/comboxDown.png);
}

/*下拉按钮隐藏边框*/
QWidget#systemdefaltSet>QComboBox::drop-down{	
	border:none;
	top:4px;
	left:-15px;
}

/*下拉窗体*/
QWidget#systemdefaltSet>QComboBox QAbstractItemView{	
	background-color:#55557f;
	outline: 1px solid #ffaa7f;   /* 选定项的虚框 */
	selection-background-color:#121650;
	color:#FFFFFF;
}

/*下拉窗体每一项*/
QWidget#systemdefaltSet>QComboBox QAbstractItemView::item{	
	height:50px;
}
/*行列按钮最初形态#spinBoxrow*/
advanceSet>QSpinBox{		
	background-color: #12164F;
	border-radius: 6px;	
	font-size: 14px;
	font-family: Microsoft YaHei;
	font-weight: 400;
	color: #FFFFFF;
}

/*行列按钮被点击之后整体轮廓设置*/
advanceSet>QSpinBox:pressed{			
	background-color: #121650;
	border: 1px solid #00FFFF;
	border-radius: 6px;
}

/*行列按钮上箭头没有被点击的状态:unchecked*/
advanceSet>QSpinBox::up-button{	
	image:url(:/new/prefix1/image/spinupbtnUnchecked.png);
}

/*行列按钮下箭头没有被点击的状态:unchecked*/
advanceSet>QSpinBox::down-button{	
	image:url(:/new/prefix1/image/spindownbtnUnchecked.png);
}

/*行列按钮上箭头被点击的状态*/
advanceSet>QSpinBox::up-button:pressed{	
	image:url(:/new/prefix1/image/spinupbtnChecked.png);	
	border:none;
}

/*行列按钮下箭头被点击的状态*/
advanceSet>QSpinBox::down-button:pressed{	
	image:url(:/new/prefix1/image/spindownbtnChecked.png);	
	border:none;
}

/*此界面上所有的单选按钮最初状态*/
advanceSet>QRadioButton{
	font-size: 14px;
	font-family: Microsoft YaHei;
	font-weight: 400;
	color: #FFFFFF;
}

/*此界面上所有的单选按钮的子部件的最初状态(未点击状态)*/
advanceSet>QRadioButton::indicator{
	image:url(:/new/prefix1/image/radioUnchecked.png);
}

/*此界面上所有的单选按钮的子部件的被点击后的状态(点击状态)*/
advanceSet>QRadioButton::indicator:checked{
	image:url(:/new/prefix1/image/radioChecked.png);
}

/*此界面上所有的复选框最初时的状态*/
advanceSet>QCheckBox{
	font-size: 14px;
	font-family: Microsoft YaHei;
	font-weight: 400;
	color: #FFFFFF;
}

/*此界面上所有的复选框子部件未被点击时的状态*/
advanceSet>QCheckBox::indicator{
	background-color:transparent;
	image:url(:/new/prefix1/image/checkbtnUnchecked.png);
}

/*此界面上所有的复选框子部件被点击时的状态*/
advanceSet>QCheckBox::indicator:checked{
	image:url(:/new/prefix1/image/checkbtnChecked.png);
}

多个相同类型的控件的样式相同

若同一类型的控件的样式要求一致,可以一起设置。

  1. 界面上有多个相同类型的控件,但是有几个控件的样式要求一致,可以采取如下设置;
/*界面中还有其它的QPushButton,但是有两个QPushButton的样式设置要求一致,可以一起设置*/
/*确定按钮,取消按钮*/
QWidget#widget>QPushButton#pushButton_confirm,QPushButton#pushButton_cancel{	
	font-size: 14px;
	font-family: Microsoft YaHei;
	font-weight: 400;
	color: #FFFFFF;
	background-color:#FF080C3E;	
	border: 1px solid #FFFFFF;
	border-radius: 6px;
}

/*确定按钮,取消按钮被点击状态*/
QWidget#widget>QPushButton#pushButton_confirm:pressed,QPushButton#pushButton_cancel:pressed{
	font-size: 14px;
	font-family: Microsoft YaHei;
	font-weight: 400;
	color: #000438;	
	background-color: #00FFFF;
	opacity: 0.9;
	border-radius: 6px;
}

2.若界面上所有同一类型的控件的样式都要求设置一致,可以不用指明控件名称,直接设置。

/*界面上所有的QPushButton控件的样式一致*/
InformDialog>QPushButton{
	color:#FFFFFF;
	background-color:#FF2D3274;
	border: 1px solid #FFFFFF;
	border-radius: 6px;
}

/*取消按钮被点击状态*/
InformDialog>QPushButton:pressed{
	background-color: #008AFF;
	border-radius: 6px;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt中QSS的简单使用 的相关文章

  • Uncaught (in promise) TypeError: Cannot read property 'data' of undefined

    最近在学习Redux的时 xff0c 自己写了个Demo xff0c 用fetch异步调用接口时返回这个脑壳疼的问题 问题 xff1a 问题排查 xff1a 一步一步在控制台打印 xff0c 并检测类型 xff0c 发现控制台打印undef
  • Ajax、fetch、axios的区别与优缺点

    背景 前端的技术发展速度非常的快 xff0c 异步请求也是其重要的体现之一 xff0c 从最早的原生XHR xff0c 再到JqueryAjax的统治时代 xff0c 再到近来 xff0c fetch axios等技术也开始出现并大量投入使
  • 什么是 Promise.allSettled() !新手老手都要会?

    什么是 Promise allSettled xff01 新手老手都要会 xff1f Promise allSettled 方法返回一个在所有给定的 promise 都已经 fulfilled 或 rejected 后的 promise x
  • 一份稳进Shopee的简历长啥样?

    小伙伴们好 xff0c 我是Eason 简历是求职流程的第一步 xff0c 是很关键的一环 Eason在做Shopee招聘工作时 xff0c 收到了投递的1000 43 的简历 xff0c 简历也修改过50多次 xff0c 最近也帮10多个
  • Vue项目中较优雅地封装Echarts

    场景 1 Echarts 1 使用时 xff0c 都需要写一堆的 option xff0c 如果每个图表都要写一个 xff0c 一个文件里面的代码量是很大的 2 不方便复用 需求 1 方便复用 2 展示类的图表 xff0c 数据与业务 样式
  • React系列--JSX到底是什么东西

    JSX 简介 JSX的全称是 Javascript and XML xff0c React发明了JSX xff0c 它是一种可以在JS中编写XML的语言 JSX更像一种模板 xff0c 类似于Vue中的 template 为什么使用JSX
  • https请求+basic认证

    目录 1 工具类 SSLClient 2 工具类HttpsClientUtil 3 使用 1 工具类 SSLClient 此类可绕过https证书 import org apache http conn ClientConnectionMa
  • 自旋锁的原理及使用

    什么是自旋锁 是指当一个线程在获取锁的时候 xff0c 如果锁已经被其它线程获取 xff0c 那么该线程将循环等待 xff0c 然后不断的判断锁是否能够被成功获取 xff0c 直到获取到锁才会退出循环 获取锁的线程一直处于活跃状态 xff0
  • 实验11 多线程

    1 设有一个银行账户 xff0c 里面有2000元钱 该账户归tom和jack两个人共同所有 每个人每 次可以取100元钱 编写一个类BankAccount表示银行账户 xff0c void withdraw int count 方法表 示
  • stm32 esp8266 ota升级-自建mqtt和文件服务器全量升级

    stm32 esp8266 ota系列文章 xff1a stm32 esp8266 ota 快速搭建web服务器之docker安装openresty stm32 esp8266 ota升级 tcp模拟http stm32 esp8266 o
  • rk1126开发板开发记录—SDK环境准备和系统烧录

    序言 最近在弄rk系列的开发板 xff0c 手上正好有一台rk1126的板子 xff0c 因为之前很少接触到嵌入式的东西 xff0c 所以在模型部署的同时遇到了很多坑 xff0c 在此期间也有很多收获 xff0c 习惯性的用文章记录一下开发
  • linux 应用层串口调试函数

    tcgetattr函数与tcsetattr函数 xff08 获取终端信息 xff09 波特率的设置通常使用cfsetospeed和cfsetispeed函数来完成
  • 安装MySQl 8.0遇到的问题及解决方法

    一 官网下载最新版本mysql xff0c 安装完成后 xff0c 安装SQLyog 二 在 C Program Files MySQL MySQL Server 8 0目录中查找是否存在 my ini文件 xff0c 如不存在 xff0c
  • Cmakelists.txt添加.h和.cpp文件

    文件目录结构是这样 代码都是最基本的代码 仅仅是个小的demo cmakelists txt里面的内容 span class token comment cmake的版本要求 span cmake minimum required span
  • 【tcpdump命令使用总结】

    1 tcpdump说明 linux系统的tcpdump命令用来分析数据包分析工具 xff0c 相似的工具有wireshark等 xff0c wireshark使用见 wireshark报文解析ping baidu com 执行tcpdump
  • 使用graphviz+pycallgraph绘制python调用关系图

    绘制python代码调用关系图 前言1 工具安装1 1 安装graphviz1 2 安装pycallgraph2 可视化调用关系 参考文献 前言 一个 python project 中往往包含很多 py 文件 python文件中又会包含很多
  • 用树莓派实现人脸识别打卡门禁系统

    用树莓派实现人脸识别打卡门禁系统的构建 背景功能硬件效果源码摄像头测试代码录入信息人脸识别 结论 背景 源于实习公司的人脸识别打卡系统 xff0c 完成之前的项目后正好没有事情干 xff0c 于是想到了这个 xff0c 公司的这个打卡系统操
  • 一个多功能智能小车的想法

    其实一直以来都有这个想法 xff0c 但是一直没有付出行动 xff0c 学了一些专业知识之后就有了一个想法 xff0c 制作一个智能的 xff0c 非常炫酷的并且看起来就很不普通的一个机器人 xff0c 比如像机器人总动员里的瓦力 xff1
  • “2020 博客之星”年度总评选 TOP 200 名单已出,速来认领!

    经过为期半个月的激烈角逐 xff0c 2020博客之星海选投票已正式落下帷幕 成功的程序员离不开技术之路的踽踽独行 xff0c 同时也离不开社区同盟的鼎力拥趸 以下博主们在此次票选中获得了强有力的支持 xff0c 为他们一整年的技术输出添上
  • 三自由度机械臂的三维设计

    三自由度机械臂的三维设计 背景底座设计机械臂设计关节连接方式底座与机械臂的连接方式效果 背景 写本篇文章的时候只是模型设计完成以及部分零件进行了采购 xff0c 最终是否能实现不能确定 xff0c 某些图片过于辣眼 xff0c 请多担待 继

随机推荐

  • 气动爬行机器人设计

    气动爬行机器人设计 简介项目规则想法原理电控原理腿部机构转向机构其他结构 结语 简介 最近在学校做一个气动的爬行机器人 xff0c 算是一个二级项目 xff0c 虽然名义上有分组 xff0c 但是基本上是我自己在做 xff0c 觉得有些东西
  • ImportError: cannot import name 'Flask'解决方法

    在写bug的时候发现了这么一个错误 xff0c ImportError cannot import name Flask xff0c 自己建一个test脚本 xff0c 代码复制过去后发现可以运行 xff0c 经检查发现脚本文件的名称可能和
  • python lambda表达式详解

    64 python lambda表达式详解 1 lambda简介 先来看一段代码示例 xff1a 第一行是lambda声明 xff0c x y相当于传入的参数 xff0c 整个函数会返回x 43 y的值 lambda作为一个表达式 xff0
  • CNN(卷积神经网络)详解

    CNN卷积神经网络详解 Why CNN局部感受野 local receptive fields 权值共享 Shared weights and biases 池化 Pooling 总的来看 Why CNN 首先回答这样一个问题 xff0c
  • mysql索引笔记 innodb null

    1 列有null 索引不失效 2 is not null 不会用索引 3 模糊查询 左边匹配 不会用索引 4 组合索引最左原则 5 设置索引 不加长度 默认长度为字段长度如varcher 255 单个索引字节不超过767 组合索引不超过30
  • Mysql避免索引失效

    要尽量避免这些不走索引的sql xff1a SELECT 96 sname 96 FROM 96 stu 96 WHERE 96 age 96 43 10 61 30 不会使用索引 xff0c 因为所有索引列参与了计算 SELECT 96
  • MySQL中的semi-join半连接

    MySQL中的semi join半连接
  • JDK8 lamdba

    1 方法调用
  • try catch finally执行顺序

    try catch finally执行顺序 内容简介代码示例执行结果 xff1a 分析 内容简介 代码中经常会在catch 或者finally中再次抛出异常 xff0c 传给调用者 xff08 如文件上传处理工具类 xff09 xff0c
  • C++中全局变量的使用

    在C 43 43 中全局变量的定义与使用做一下下面简单的记录 xff0c 方便日后查阅 xff0c 也与大家一起学习 1 全局变量的声明 1 在头文件 h中进行声明 xff0c 如果在此文件之外也要使用该变量 xff0c 则在变量声明前加e
  • mysql innodb

    mysql s sql优化 io 使用limit返回用到的字段 xff0c 不要返回太多无用字段和一些大字段 避免索引失效 创建索引 dd
  • C语言之什么是大小端,数组大小端,位域大小端,结构体大小端

    公众号 xff1a 嵌入式不难 本文仅供参考学习 xff0c 如有错误之处 xff0c 欢迎留言指正 理解大小端之前必须明白的三点 内存地址始终以字节为单位大小端只针对基本数据类型存在位域的情况下 xff0c 小端模式下先定义的位域从LSB
  • <Linux开发> linux应用开发-之-can通信开发例程

    xff1c Linux开发 xff1e linux应用开发 之 can通信开发例程 一 简介 对于Can通信的相关介绍 xff0c 读作不过多介绍了 xff0c 网上其它网友的介绍有很多 二 环境搭建 本次测试can通信的应用例程是运行在u
  • 使用RGBD相机模拟激光数据,用于move_base中添加新图层避障功能

    参考文章 xff1a ROS depthimage to laserscan ROS导航 向cost map中添加超声波障碍图层 一 RGBD模拟激光雷达数据 我使用的是RealSense双目相机 xff0c 首先使用的是ros自带的功能包
  • 公安视图库1400的协议

    一 平台注册 注销 1 1 注册 注销流程 注册流程1如图所示 图 1 下级平台主动向上级平台注册 xff1b 注册鉴权信息 xff08 用户名和密码 xff09 由上级平台提供 xff1b 1 2 报文说明 1 2 1 下级第一次注册 P
  • linux cmake交叉编译

    linux cmake交叉编译 linux cmake交叉编译下载测试添加依赖库需要注意的问题 linux cmake交叉编译 linux cmake交叉编译 xff0c 使用环境 xff1a ubuntu cmake gcc arm 10
  • OpenCV中使用RANSAC算法实现多张图像拼接

    思路 xff1a xff08 1 xff09 获取图像的特征点 xff0c 将每张图片的特征点保存到一个vector中 xff1b xff08 2 xff09 通过特征点匹配的方法 xff0c 找到每张图片的共有特征点 xff0c 并将其保
  • 数据安全--安全网关

    简介 对于数据安全来说 xff0c 安全网关是数据安全建设中极其重要的一部分 xff0c 我这里把它做了几种分类 xff0c 如下 xff1b 对内 xff1a 零信任安全网关 xff08 7层和4层 xff09 对外 xff1a 应用安全
  • idea使用svn拉取源码,创建分支,合并分支教程

    svn拉取源码 xff0c 创建分支 xff0c 合并分支教程 最近对svn的分支使用比较感兴趣了 xff0c 花时间研究了一下 xff0c 分享给大家 xff1a 此文章记录了idea使用svn的过程 xff1a 包括拉取源码 建立分支
  • Qt中QSS的简单使用

    样式表的组成 样式表由两大元素组成 xff1a 选择器和声明 选择器实际上可以理解为对象 xff0c 声明则是对该对象的属性的设置 样式表的使用 方法一 xff1a 在代码中调用setStyleSheet 来设置样式 xff1b 方法二 x