网上主要是关于C++的QSS设置,和python大致相同,但还是有一些区别。为了避免麻烦,在这里做一下记录和分享,方便以后的使用。以竖直(vertical)的滚动条为例。注意,使用的时候请将每行代码后面的注释删掉再运行代码,否则代码运行不出效果。
关键点:
1.需要将对scrollarea的QSS设置拆分为对scrollAreaWidgetContents和scrollbar的设置,如下所示,否则scrollarea的整体设置将覆盖scrollbar的设置,使得scrollbar的设置无效。
2.为了清楚看到每一部分的作用,这段代码中用了一些比较显眼的颜色,读者要使用时可以自行调整。
3.代码中涉及到箭头图片路径的部分,如image:url('./pictures/up-arrow.jpg'),读者自行从网上下载图片,然后把路径改成自己电脑里放图片的路径即可。
self.scrollAreaWidgetContents.setStyleSheet('''
QWidget{
background:white;
}
''')
self.scrollArea.setStyleSheet('''
QWidget{background:red;} # 调整滚动条的背景颜色
QScrollBar:vertical # 竖直滚动条,水平滚动条用horizontal,vertical、horizontal都不加则表示所有滚动条
{
border-radius:7px; # 滚动条的滑轨的圆角
background:blue; # 滚动条的滑轨的背景颜色
padding-top:14px; # 滚动条上部增加padding
padding-bottom:14px; # 同理
}
QScrollBar::handle:vertical
{
background:darkgray; # 滚动条颜色
border-radius:6px; # 滚动条圆角
margin-left:2px; # 滚动条和滑轨之间的左间隙
margin-right:2px; # 同理
}
QScrollBar::handle:vertical:hover # 鼠标放上滑块滑块变色
{
background:gray;
border-radius:6px;
}
QScrollBar::add-line:vertical # 下方箭头
{
height:14px;width:8px; # 设置箭头区域的宽高
image:url('./pictures/down-arrow.jpg'); # 自己在网上找的箭头图片。如果不需要箭头,可将引号里面的路径去除,设置为 image:url('')即可
}
QScrollBar::sub-line:vertical # 上方箭头
{
height:14px;width:8px;
image:url(''); # 这里设置为空,方便和下箭头对比
}
QScrollBar::add-line:vertical:hover # 鼠标放到下箭头箭头变成其他图片
{
height:14px;width:8px;
image:url('./pictures/down-down-arrow.jpg');
subcontrol-position:bottom;
}
QScrollBar::sub-line:vertical:hover # 鼠标放到上箭头箭头变成其他图片
{
height:14px;width:8px;
image:url(''); # 这里设置为空,方便和下箭头对比
subcontrol-position:top;
}
QScrollBar::add-page:vertical # 滑块已经经过的滑轨区域的颜色,若没有这里的设置,该区域会呈现网格状,不美观
{
background:green;
}
QScrollBar::sub-page:vertical # 滑块还没经过的滑轨区域的颜色,若没有这里的设置,该区域会呈现网格状,不美观
{
background:red;
}
''')
下图为效果图。
此外,还有QScrollBar::up-arrow:vertical等箭头设置,但我目前的尝试并没有成功,如有兴趣,参考链接https://blog.csdn.net/Zzhouzhou237/article/details/73613278进行尝试。