Qt样式表(7):使用样式表设置滚动条的外观
若对C++语法不熟悉,建议参阅《C++语法详解》一书,电子工业出版社出版,该书语法示例短小精悍,对查阅C++知识点相当方便,并对语法原理进行了透彻、深入详细的讲解,可确保读者彻底弄懂C++的原理,彻底解惑C++,知其然更知其所以然。此书是一本全面了解C++不可多得的案头必备图书。
4、滚动相关
19)、QAbstractScrollArea //支持盒子模型,background-attachment属性(滚动或固定)可被使用
20)、QScrollBar //支持盒子模型
内容矩形被认为是滑块移动的凹槽。
:horizontal和:vertical伪状态用于确定滚动条的方向
width和height属性可设置QScrollBar的范围。
::handle子控件用于设置滑块的样式
min-width和min-height属性用于限制滑块的大小
::add-line子控件用于设置增加一行的按钮(比如向下或向右按钮)
::sub-line子控件用于设置减少一行的按钮(比如向上或向左按钮)
::right-arrow或::down-arrow子控件用于设置向右或向下箭头,默认情况下,这两个子控件位于add-line子控件内容矩形的中心
::left-arrow或::up-arrow子控件用于设置向左或向上箭头,默认情况下,这两个子控件位于sub-line子控件内容矩形的中心
::sub-page子控件用于设置减少页的滑块区域样式
::add-page子控件用于设置增加页的滑块区域样式
21)、QSlider //支持盒子模型
对于水平滑块,必须提供min-width和height属性
对于垂直滑块,必须提供min-height和width属性
::groove子控件用于设置滑块的凹槽,默认情况下,凹槽位于滑块的内容矩形中
::handle子控件设置滑块的手柄,该子控件在::groove子控件的内容矩形中移动
示例13.23:滚动条(QScrollBar)(效果见图13-41)
为了讲清楚滚动条的原理及理解滚动条的各组成部分,本示例将绘制如图13-41所示非传统形式的滚动条
#include<QtWidgets>
int main(int argc, char *argv[]){ QApplication aa(argc,argv);
QWidget w; QScrollBar *ps=new QScrollBar(&w);
ps->setOrientation(Qt::Vertical); ps->move(22,22);
/*本示例为垂直滚动条,因此滚动条会一直处于:vertical伪状态,所以对滚动条的每个子控件的设置都需要指定该状态*/
aa.setStyleSheet(
//1、设置整个滚动条
"QScrollBar:vertical {border: 2px solid red; margin:50 100 50 100;"
"background-clip:margin; background: green; "
//注意:width和height属性仅用于子控件,因此此处使用min-width和min-height
"min-width: 50; min-height:200;}"
//2、设置滚动条的滑块
"QScrollBar::handle:vertical {background: white; min-height: 20px;}"
//3、设置滚动条的向下按钮
"QScrollBar::add-line:vertical {"
"border: 2px solid blue; background: yellow;"
" height: 40px; width:50px;"
"subcontrol-position: bottom left; subcontrol-origin: margin;}"
//4、设置滚动条的向上按钮
" QScrollBar::sub-line:vertical {"
"border: 2px solid blue; background: yellow;"
"height: 40px; width:50px;"
"subcontrol-position: top left; subcontrol-origin: margin;}"
//5、设置向上和向下箭头
"QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical {"
"border: 2px solid blue; width: 22px; height: 22px; background: red;}"
//6、设置滚动条的增加页区域
" QScrollBar::add-page:vertical{background: rgb(111,1,111);}" //紫色
//7、设置滚动条的减少页区域
" QScrollBar::sub-page:vertical {background: rgb(1,111,111);}" //青色
);
w.resize(400,333); w.show(); return aa.exec(); }
本文作者:黄邦勇帅(原名:黄勇)