QSS功能强大,可以自定义各种小部件的外观,其样式表的概念,术语和语法与HTML的CSS样式表类似。
首先创建qss文件,例如:style.qss,把它加到资源文件中, 在代码里加载文件,代码如下
1 QFile file(":/style.qss"); 2 file.open(QFile::ReadOnly); 3 QString styleSheet = tr(file.readAll()); 4 this->setStyleSheet(styleSheet); 5 file.close();
qss文件内容如下:
1 QPushButton#myButton:normal/*鼠标正常时的效果*/ 2 { 3 color:#000000; 4 background-color:rgb(40, 85, 20); /*改变背景色*/ 5 border-style:inset;/*改变边框风格*/ 6 padding-left:4px; 7 padding-top:4px; 8 } 9 10 /*鼠标悬浮时的效果*/ 11 QPushButton#myButton:hover 12 { 13 color:#0000ff; 14 background-color:rgb(40, 85, 20); /*改变背景色*/ 15 border-style:inset;/*改变边框风格*/ 16 padding-left:8px; 17 padding-top:8px; 18 } 19 /*如果按下与悬浮想同时产生效果,hover必须写在pressed的后面*/ 20 /*鼠标按下时的效果*/ 21 QPushButton#myButton:pressed 22 { 23 color:#00ff00; 24 background-color:rgb(40, 85, 20); /*改变背景色*/ 25 border-style:inset;/*改变边框风格*/ 26 padding-left:6px; 27 padding-top:6px; 28 } 29 30 /*鼠标不可用时的效果*/ 31 QPushButton#myButton:disabled 32 { 33 color:#000000; 34 background-color:rgb(40, 85, 20); /*改变背景色*/ 35 border-style:inset;/*改变边框风格*/ 36 padding-left:6px; 37 padding-top:6px; 38 } 39 40 QPushButton 41 { 42 color:red; /*文字颜色*/ 43 background-color:rgb(30, 78, 11);/*背景色*/ 44 border-style:outset; /*边框风格*/ 45 border-width:2px;/*边框宽度*/ 46 border-color:rgb(10, 46,112); /*边框颜色*/ 47 border-radius:10px; /*边框倒角*/ 48 font:bold 14px; /*字体*/ 49 font-family: Segoe UI; 50 min-width:100px;/*控件最小宽度*/ 51 min-height:20px;/*控件最小高度*/ 52 padding:4px;/*内边距*/ 53 } 54 55 56 /*按钮样式*/ 57 QPushButton:flat 58 { 59 border:2px solid red; 60 } 61 62 /*当按钮打开菜单时:ui->pushButton->setMenu(menu)*/ 63 QPushButton:open 64 { 65 background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop:0 #abdeac, stop: 1 #fafc12); 66 } 67 68 /*子选择器:菜单*/ 69 QPushButton::menu-indicator 70 { 71 image:url(":/close_normal.png"); 72 /*image:none;去掉小三角号*/ 73 subcontrol-origin:padding;/*绘制subcontrol的参考矩形的位置*/ 74 subcontrol-position:bottom right;/*小三角的位置*/ 75 } 76 77 QPushButton::menu-indicator:pressed, QPushButton::menu-indicator:open 78 { 79 position:relative; 80 top:4px; 81 left:4px; 82 }