Qt 自定义 滚动条 样式

傷城~ 2022-08-04 04:18 400阅读 0赞

#

  今天是时候把软件中的进度条给美化美化了,最初的想法就是仿照QQ。

先前的进度条是这样11163913-081132ea578649779a333310eebb3dc4.png,默认的总是很难受欢迎的;美化之后的是这样11164018-828dafd9adbe4862bc9e74d01318e3f7.png,怎么样?稍微好看一点点了吧,最后告诉你实现这个简单的效果在Qt只需要加几句简单的样式。下面就来吐槽吐槽,关于进度条样式的设置问题,欢迎评论交流,高手勿喷。

  Qt设置样式的方式有两种,一种直接在程序中写,适用于样式不多的情况;另一种,写入到文件中,适用用样式较大且需要提供换肤功能的情况。

  1.写入到文件中,新建个xx.qss,然后复制一下内容

复制代码

  1. // 设置垂直滚动条基本样式
  2. QScrollBar:vertical
  3. {
  4. width:8px;
  5. background:rgba(0,0,0,0%);
  6. margin:0px,0px,0px,0px;
  7. padding-top:9px; // 留出9px给上面和下面的箭头
  8. padding-bottom:9px;
  9. }
  10. QScrollBar::handle:vertical
  11. {
  12. width:8px;
  13. background:rgba(0,0,0,25%);
  14. border-radius:4px; // 滚动条两端变成椭圆
  15. min-height:20;
  16. }
  17. QScrollBar::handle:vertical:hover
  18. {
  19. width:8px;
  20. background:rgba(0,0,0,50%); // 鼠标放到滚动条上的时候,颜色变深
  21. border-radius:4px;
  22. min-height:20;
  23. }
  24. QScrollBar::add-line:vertical // 这个应该是设置下箭头的,3.png就是箭头
  25. {
  26. height:9px;width:8px;
  27. border-image:url(:/images/a/3.png);
  28. subcontrol-position:bottom;
  29. }
  30. QScrollBar::sub-line:vertical // 设置上箭头
  31. {
  32. height:9px;width:8px;
  33. border-image:url(:/images/a/1.png);
  34. subcontrol-position:top;
  35. }
  36. QScrollBar::add-line:vertical:hover // 当鼠标放到下箭头上的时候
  37. {
  38. height:9px;width:8px;
  39. border-image:url(:/images/a/4.png);
  40. subcontrol-position:bottom;
  41. }
  42. QScrollBar::sub-line:vertical:hover // 当鼠标放到下箭头上的时候
  43. {
  44. height:9px;width:8px;
  45. border-image:url(:/images/a/2.png);
  46. subcontrol-position:top;
  47. }
  48. QScrollBar::add-page:vertical,QScrollBar::sub-page:vertical // 当滚动条滚动的时候,上面的部分和下面的部分
  49. {
  50. background:rgba(0,0,0,10%);
  51. border-radius:4px;
  52. }

复制代码

接着在程序中读取文件

  1. QFile file(":/scrollbar.qss");
  2. file.open(QFile::ReadOnly);
  3. listWidget->verticalScrollBar()->setStyleSheet(file.readAll());

2.直接在程序中设置,简单

复制代码

  1. listWidget->verticalScrollBar()->setStyleSheet("QScrollBar:vertical"
  2. "{
  3. "
  4. "width:8px;"
  5. "background:rgba(0,0,0,0%);"
  6. "margin:0px,0px,0px,0px;"
  7. "padding-top:9px;"
  8. "padding-bottom:9px;"
  9. "}"
  10. "QScrollBar::handle:vertical"
  11. "{
  12. "
  13. "width:8px;"
  14. "background:rgba(0,0,0,25%);"
  15. " border-radius:4px;"
  16. "min-height:20;"
  17. "}"
  18. "QScrollBar::handle:vertical:hover"
  19. "{
  20. "
  21. "width:8px;"
  22. "background:rgba(0,0,0,50%);"
  23. " border-radius:4px;"
  24. "min-height:20;"
  25. "}"
  26. "QScrollBar::add-line:vertical"
  27. "{
  28. "
  29. "height:9px;width:8px;"
  30. "border-image:url(:/images/a/3.png);"
  31. "subcontrol-position:bottom;"
  32. "}"
  33. "QScrollBar::sub-line:vertical"
  34. "{
  35. "
  36. "height:9px;width:8px;"
  37. "border-image:url(:/images/a/1.png);"
  38. "subcontrol-position:top;"
  39. "}"
  40. "QScrollBar::add-line:vertical:hover"
  41. "{
  42. "
  43. "height:9px;width:8px;"
  44. "border-image:url(:/images/a/4.png);"
  45. "subcontrol-position:bottom;"
  46. "}"
  47. "QScrollBar::sub-line:vertical:hover"
  48. "{
  49. "
  50. "height:9px;width:8px;"
  51. "border-image:url(:/images/a/2.png);"
  52. "subcontrol-position:top;"
  53. "}"
  54. "QScrollBar::add-page:vertical,QScrollBar::sub-page:vertical"
  55. "{
  56. "
  57. "background:rgba(0,0,0,10%);"
  58. "border-radius:4px;"
  59. "}"
  60. );

复制代码

滚动条有两种,水平的和垂直的,我这里面只设置了垂直的,水平的其实差不多,只需要把 vertical 换成 horizontal。

更多的自定义样式可以参考http://www.zhouwenyi.com/name/193435,有点乱不过还能用,具体的意思我在上面已经添加注释。

样式中设计到一些图片,如果您需要源代码例子,请下载:ListWidget.rar.

转载请标明出处哦:http://www.cnblogs.com/xufeiyang/p/3314955.html

发表评论

表情:
评论列表 (有 0 条评论,400人围观)

还没有评论,来说两句吧...

相关阅读