收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
1.样式表语法
🔵选择器类型
不知你是否经历过在一个界面设置背景图片,但界面上的组件,例如按钮的背景也会被设置为该背景图,如下图所示,这是由于选择器导致的问题。
图中的frame 被称为选择器,表示样式表的设置仅对该选择器有效。上图的frame是一个窗体的对象名,选择器若为具体的类实例对象名,应在前面使用#来表示,也可将图中的#frame改为QFrame(类型名),区别是前者仅对具体的一个窗体起作用效果,而后者是所有QFrame类及其子类都有效果。除此之外,还有以下选择器:
🔵QPushButton[flat=“false”]:匹配非flat的QPushButton实例。
🔵.QPushButton:匹配QPushButton的实例,但不匹配其子类,注意前面的点。
🔵QPushButton#okButton:匹配对象名称为okButton的所有QPushButton实例。
🔵QDialog QPushButton:匹配所有QPushButton实例,这些实例是QDialog的后代(子代等)。
🔵QDialog > QPushButton:匹配所有QPushButton实例,这些实例是QDialog的直接子代。
🔵声明
QPushButton{color:rgb(255, 0, 0);}
/\*括号里面的color:rgb(255, 0, 0);被称为声明。\*/
/\*该语句的意思是将QPshButton类的按钮中的字体设置为红色。\*/
QPushButton{background-color: rgb(0, 170, 255);}
/\*该语句的意思是将QPshButton类的按钮的背景色设置为蓝色。\*/
如果你照上面做了,按钮的字体颜色未编译下是可以看到的,而按钮背景可能不会显示,必须编译后才可以显示,这时可以加一句border-radius:0px;,这样按钮的背景色就会显示出来,具体原因不是很清楚。
而border-radius:0px;的意思是边框圆角半径。随着数值越来越大,按钮也越来越圆润~~,如下图。
🔵子控件
如上图QTabWidget组件,它的原型是下图,对于样式复杂的窗口组件(该组件又由几个小组件构成),必须访问窗口小部件的子控件,对其进行单独使用样式表,直接右键对QTabWidget使用样式表是不可用的。
例如,红色的是小部件是tab,QTabBar或QToolBox的选项卡,而蓝色的是pane,QTabWidget的窗格(框架),想达到图中效果,就需要分别设置样式表。
🔵伪状态
伪状态是干什么的呢,就是用于界面动态效果,用来检测一系列动作,例如鼠标悬停在按钮上,鼠标按下去,这样一系列动作所产生的动态效果。
效果可能过大了哈,为了演示,这都不重要。
🔵 悬停:hover
🔵 不悬停:!hover
🔵 悬停并选中 :hover:checked
🔵悬停并按下:hover:!pressed
如果想修改图中输入框的边框颜色可以使用
border-style:solid;
border-color: rgb(170, 170, 255);
前提是将边框的风格定义为以下类型(默认类型是none,无边框,即使用了边框颜色也不会显示):
🔵none 定义无边框。
🔵hidden 与 “none” 相同。不过应用于表时除外,对于表,hidden 用于解决边框冲突。
🔵dotted 定义点状边框。在大多数浏览器中呈现为实线。
🔵dashed 定义虚线。在大多数浏览器中呈现为实线。
🔵solid 定义实线。
🔵double 定义双线。双线的宽度等于 border-width 的值。
🔵groove 定义 3D 凹槽边框。其效果取决于 border-color 的值。
🔵ridge 定义 3D 垄状边框。其效果取决于 border-color 的值。
🔵inset 定义 3D inset 边框。其效果取决于 border-color 的值。
🔵outset 定义 3D outset 边框。其效果取决于 border-color 的值。
2024年3月31日更新
三. 资源加载
如果大家有图片,字体,样式表等资源需要加载到程序里面,不建议大家使用绝对路径,可以如图所示,右击资源,选择创建资源,然后将资源放在创建的目录中,再选择现有资源,即可加载。
QT自带的字体有些丑,大家可以从https://www.fonts.net.cn/下载字体,然后导入电脑的字体资源即可使用
字体里面有些字体是等宽的,有些不是,建议大家选择等宽的字体,因为更好看。
这里有一个注意点,例如fonts字体资源,在fonts文件夹里面不要出现fonts.qrc,也就是qt生成的资源文件,不然尽管在属性栏可以选择对应的资源字体,但是在代码中导入的时候就会出现导入失败问题。
2024年3月31日更新
更多的用法就需要大家去挖掘和积累了,下面是我做的一些效果。
这句话删掉
之前在https://zxfdog.blog.csdn.net/article/details/108296647这篇博文里面可能写的qss语法比较多一点,然后当时写了一个生成器,比较挫,想着再写一版,但是半途而废了。。。。
现在多给大家举一些比较有用的例子吧,基础的按钮就不多说了。
QTreeWidget的qss
//基本的设置
QTreeWidget {
border:2px solid rgb(54, 81, 97);
color: rgb(0, 0, 0);
font: 10pt "OPPOSans B";
}
//表头设置
QHeaderView {
font: 10pt "OPPOSans B";
color: rgb(56, 56, 56);
background-color: rgb(54, 81, 97);
}
QTreeWidget#treeWidget {
border: 0px solid #D3D6DD;
outline: none;
}
QTreeWidget::item {
height: 28px;
color: rgb(255, 255, 255);
outline: 0px;
border-bottom: 1px solid rgba(197, 197, 197, 50);
}
//每行
QTreeWidget::item:hover {
outline: 0px;
color: rgb(255, 255, 255);
background-color: rgba(209, 209, 209, 20);
}
//每行
QTreeWidget::item:selected{
outline: 0px;
color: #45B2FF;
background-color: rgba(209, 209, 209, 20);
}
//每行
QTreeWidget::item:selected:active{
outline: 0px;
color: #45B2FF;
}
//每行
QTreeWidget::item:selected:!active {
outline: 0px;
color: #45B2FF;
}
//分支
QTreeWidget::branch {
height: 28px;
width: 28px;
}
//这个是设置前面展开和关闭的小三角
QTreeWidget::branch:closed:has-children:!has-siblings,
QTreeWidget::branch:closed:has-children:has-siblings {
border-image: none;
image: url(:/lib/tree_close.png);
}
//这个是设置前面展开和关闭的小三角
QTreeWidget::branch:open:has-children:!has-siblings,
QTreeWidget::branch:open:has-children:has-siblings {
border-image: none;
image: url(:/lib/tree_open.png);
}
至于每行的不同控件如何实现,可以将需要的控件放在一个widget里面,然后将widget添加到行里面即可
comboBox的qss
QComboBox{
color:#ffffff;
border:0px solid #8a8a8a;
color: rgb(138, 138, 138);
border-radius:5px;
background-color: rgb(25, 25, 25, 155);
padding-left:10px;
font: 10pt "OPPOSans B";
}
QComboBox QAbstractItemView::item
{
height:28px;
font: 10pt "OPPOSans B";
}
QComboBox:disabled{
border:1px solid gray;
color:gray;
}
QComboBox::drop-down{
background:transparent;
}
QComboBox::down-arrow{
image: url(:/lib/tree_open.png);
width:20px;
height:20px;
margin-right: 10px;
}
QComboBox::down-arrow:enabled{
color:#52DCFE;
}
QComboBox QAbstractItemView{
font: 10pt "OPPOSans B";
outline:0px solid gray;
border:1px solid #1e2d36;
color:#ffffff;
background-color:#1e2d36;
selection-background-color:#52DCFE;
}
设置后可能会遇到下列选项中的值高度无法生效,需要调一下setView函数
ui->comboBox_transport->setView(new QListView());
即可生效
Menu的qss
QMenu {
background-color:rgb(253,253,254);
/\*padding:5px;\*/
padding: 5px 0px 5px 0px;
border-radius:6px;
border:2px solid rgb(108, 117, 125, 65);
}
QMenu::item {
font-size: 10pt;
font: 10pt "OPPOSans B";
color: rgb(63, 63, 63);
background-color:rgb(253,253,254);
padding: 5px 25px 5px 25px;
/\*margin: 2px 2px 2px 2px;\*/
}
QMenu::item:selected {
background-color : rgb(236,236,237);
}
QMenu::icon:checked {
background: rgb(253,253,254);
position: absolute;
top: 1px;
right: 1px;
bottom: 1px;
left: 1px;
}
QMenu::icon:checked:selected {
background-color : rgb(236,236,237);
background-image: url(:/space_selected.png);
}
QMenu::separator {
height: 2px;
background: rgb(235,235,236);
/\*margin-left: 10px;\*/
/\*margin-right: 10px;\*/
}
设置圆角以后,如果发现还有背景,非透明,调用setWindowFlags接口即可。
QMenu\* menu = new QMenu();
menu->setWindowFlags(menu->windowFlags() | Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint);
QScrollBar的美化
包含垂直和水平
QScrollBar:vertical{
width: 8px;
background-color: rgb(67, 77, 88);
margin: 0px,0px,0px,0px;
padding-top: 0px; /\*//隐藏上下的箭头\*/
padding-bottom: 0px;
}
QScrollBar::handle:vertical {
width: 8px;
background-color: rgb(239, 239, 239);
/\*滚动条两端变成椭圆 \*/
border-radius: 2px;
min-height: 0;
}
QScrollBar::sub-page:vertical {
background-color: rgba(255, 255, 255, 0);
}
QScrollBar::add-page:vertical
{
background-color: rgba(255, 255, 255, 0);
}
QScrollBar::add-line:vertical {
border: none;
height: 0px;
subcontrol-position: bottom;
subcontrol-origin: margin;
}
QScrollBar::sub-line:vertical {
border: none;
height: 0px;
subcontrol-position: top;
subcontrol-origin: margin;
}
QScrollBar::down-arrow:vertical {
border:none;
}
QScrollBar::up-arrow:vertical {
border:none;
}
QScrollBar::horizontal{
height: 8px;
background-color: rgb(67, 77, 88);
margin: 0px,0px,0px,0px;
padding-top: 0px; /\*//隐藏上下的箭头\*/
padding-bottom: 0px;
}
QScrollBar::handle:horizontal {
height: 8px;
background-color: rgb(239, 239, 239);
/\*滚动条两端变成椭圆 \*/
border-radius: 2px;
min-height: 0;
}
QScrollBar::sub-page:horizontal {
background-color: rgba(255, 255, 255, 0);
}
QScrollBar::add-page:horizontal
{
background-color: rgba(255, 255, 255, 0);
}
QScrollBar::add-line:horizontal {
border: none;
height: 0px;
subcontrol-position: bottom;
subcontrol-origin: margin;
}
QScrollBar::sub-line:horizontal {
border: none;
height: 0px;
subcontrol-position: top;
subcontrol-origin: margin;
}
QScrollBar::down-arrow:horizontal {
border:none;
}
QScrollBar::up-arrow:horizontal {
border:none;
}
先更新这么多,更新的这些图都来自于我目前正在写的一个小工具,https://github.com/HuaGouFdog/Fdog-Kit
有兴趣可以看下,在界面美化上花了更多功夫。
下面是旧的啦
四.效果
收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Zkb2df,size_16,color_FFFFFF,t_70)
收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
[外链图片转存中…(img-VLhxRoID-1715641257945)]
[外链图片转存中…(img-tWu9XQjz-1715641257946)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!