• QT动态加载qss和rcc方式


    准备工作

            1、编写QRC资源文件[window和linux通用]

            

    2、通过rcc程序生成rcc资源文件

             生成二进制数据:

            通过控制台窗口执行以下命令,会把qrc中的资源文件写成二进制数据保存

     rcc.exe -binary .\resuorce.qrc -o .\resuorce.rcc 

            生成16进制数据:

            通过控制台窗口执行以下命令,会把qrc中的资源文件写成16进制数据保存

    ​​​​​​​rcc.exe .\resuorce.qrc -o .\resuorce.rcc

            以上方式选其一种方式生成rcc文件

    3、编写qss文件

    1. QLabel{
    2. background-color: transparent;
    3. border: 0px solid #298DFF;
    4. border-radius: 3px;
    5. color: #FFFFFF;
    6. font-size: 10pt;
    7. }
    8. QLabel#paramTitle{
    9. border-image: url(:/skin/rec/title_bk.png);
    10. border: 0px solid #298DFF;
    11. border-radius: 3px;
    12. color: #FFFFFF;
    13. font-size: 15pt;
    14. }
    15. QGroupBox{
    16. border-image: url(:/skin/rec/content_bk.png);
    17. }
    18. QWidget#CurstomPlot{
    19. border-image: url(:/skin/rec/center_content_bk.png);
    20. }
    21. QToolButton{
    22. font-size: 14pt;
    23. color:#FFFFFF;
    24. border-image: url(:/skin/rec/btn_cmd_no_sel.png);
    25. }
    26. QToolButton:hover{
    27. border-image: url(:/skin/rec/btn_cmd_hover.png);
    28. }
    29. QToolButton:pressed{
    30. border-image: url(:/skin/rec/btn_cmd_sel.png);
    31. }
    32. QPushButton{
    33. font-size: 14pt;
    34. color:#FFFFFF;
    35. border-image: url(:/skin/rec/btn_cmd_no_sel.png);
    36. }
    37. QPushButton:hover{
    38. border-image: url(:/skin/rec/btn_cmd_hover.png);
    39. }
    40. QPushButton:pressed{
    41. border-image: url(:/skin/rec/btn_cmd_sel.png);
    42. }
    43. QLineEdit {
    44. border: 1px solid #A0A0A0;
    45. border-radius: 3px;
    46. padding-left: 5px;
    47. background-color: transparent;
    48. color: #FFFFFF;
    49. selection-background-color:rgba(39,114,166,0.8);
    50. selection-color: #FFFFFF;font-size: 15pt;
    51. }
    52. QTabBar::tab{
    53. width: 130px;
    54. height:30px;
    55. font-size: 18px;
    56. font-weight: bold;
    57. color:#FFFFFF;
    58. padding: 0 0 0 0;
    59. }
    60. QTabBar::tab:first:selected {
    61. border-image: url(:/skin/rec/tab_sel_first.png);
    62. }
    63. QTabBar::tab:first:!selected {
    64. border-image: url(:/skin/rec/tab_no_sel.png);
    65. }
    66. QTabBar::tab:middle:selected{
    67. border-image: url(:/skin/rec/tab_sel.png);
    68. }
    69. QTabBar::tab:middle:!selected{
    70. border-image: url(:/skin/rec/tab_no_sel.png);
    71. }
    72. QTabBar::tab:last:selected {
    73. border-image: url(:/skin/rec/tab_sel.png);
    74. }
    75. QTabBar::tab:last:!selected {
    76. border-image: url(:/skin/rec/tab_no_sel.png);
    77. }
    78. QTabWidget:pane{background-color: transparent;
    79. border-image: url(:/skin/rec/param_background.png);
    80. }
    81. QComboBox {
    82. color:#FFFFFF;
    83. font-size:18px;
    84. padding: 1px 15px 1px 3px;
    85. border:1px solid rgba(228,228,228,1);
    86. border-radius:2px 2px 2px 2px;
    87. }
    88. QComboBox QAbstractItemView{
    89. background:rgb(38,18,154);
    90. border:1px solid rgba(228,228,228,1);
    91. border-radius:1px 1px 1px 1px;
    92. font-size:18px;
    93. outline: 0px;
    94. }
    95. QComboBox QAbstractItemView::item{
    96. height:36px;
    97. color:#666666;
    98. padding-left:9px;
    99. background-color:#FFFFFF;
    100. }
    101. QComboBox QAbstractItemView::item:hover{
    102. background-color:#409CE1;
    103. color:#FFFFFF;
    104. }
    105. QComboBox QAbstractItemView::item:selected{
    106. background-color:#409CE1;
    107. color:#FFFFFF;
    108. }
    109. QTableWidget{
    110. background:transparent;
    111. }
    112. QTableWidget::item{
    113. font-size:16pt;
    114. color:rgba(255,255,255,150);
    115. background:transparent;
    116. text-align:center;
    117. }
    118. QTableWidget::item:hover{
    119. color:#FFFFFF;
    120. background:rgba(130,190,228,50);
    121. }
    122. QTableWidget::item:selected{
    123. color:#FFFFFF;
    124. border: 1px solid #A0A0A0;
    125. border-radius: 0px;
    126. padding-left: 0px;
    127. background:rgba(130,190,228,100);
    128. }
    129. QHeaderView::section,QTableCornerButton:section{
    130. text-align:center;
    131. padding:3px;
    132. margin:0px;
    133. color:#FFFFFF;
    134. border:1px solid #242424;
    135. border-left-width:0px;
    136. border-right-width:1px;
    137. border-top-width:0px;
    138. border-bottom-width:1px;
    139. background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 rgba(130,190,228,150),stop:1 rgba(130,190,228,150));
    140. }
    141. QHeaderView::section:selected{
    142. color:#FFFFFF;
    143. border:1px solid #242424;
    144. }
    145. QScrollBar:vertical{
    146. width:20px;
    147. border-style:flat;
    148. border-radius: 4px;
    149. border:0px;
    150. background:rgba(130,190,228,150);
    151. }
    152. QScrollBar::handle:vertical{
    153. background: rgba(130,190,228,150)
    154. border-radius: 4px;
    155. width:20px;
    156. min-height:20px;
    157. border-style:flat;
    158. }
    159. QScrollBar::handle:vertical::hover{
    160. background: rgba(130,190,228,150);
    161. border-radius: 4px;
    162. width:20px;
    163. }
    164. QScrollBar::handle:vertical::pressed{
    165. background: rgba(130,190,228,150);
    166. border-radius:4px;
    167. width:20px;
    168. }
    169. QScrollBar::sub-page:vertical {
    170. background: rgba(130,190,228,200)
    171. border-style:flat;
    172. }
    173. QScrollBar::add-page:vertical {
    174. background: rgba(130,190,228,200)
    175. border-style:flat;
    176. }
    177. QScrollBar::add-line:vertical{
    178. background: rgba(130,190,228,200)
    179. }
    180. QScrollBar::sub-line:vertical {
    181. background: transparent;
    182. }
    183. QScrollBar:horizontal{
    184. height:20px;
    185. border-style:flat;
    186. border-radius: 4px;
    187. border:0px;
    188. background:rgba(130,190,228,150);
    189. }
    190. QScrollBar::handle:horizontal{
    191. background: rgba(130,190,228,150);
    192. border-radius: 4px;
    193. height:20px;
    194. min-width:20px;
    195. border-style:flat;
    196. }
    197. QScrollBar::handle:horizontal::hover{
    198. background: rgba(130,190,228,150);
    199. border-radius: 4px;
    200. height:20px;
    201. }
    202. QScrollBar::handle:horizontal::pressed{
    203. background: rgba(130,190,228,200);
    204. border-radius:4px;
    205. height:20px;
    206. }
    207. QScrollBar::sub-page:horizontal {
    208. background: rgba(130,190,228,200);
    209. border-style:flat;
    210. }
    211. QScrollBar::add-page:horizontal {
    212. background: rgba(130,190,228,200);
    213. border-style:flat;
    214. }
    215. QScrollBar::sub-line:horizontal {
    216. background: rgba(130,190,228,200);
    217. }
    218. QScrollBar::add-line:horizontal{
    219. background: rgba(130,190,228,200);
    220. }

    4、代码中加载rcc和qss文件设置效果

    1. void loadSkin(const QString &path)
    2. {
    3. QString resPath = path+"/resuorce.rcc";
    4. QString qssPath = path+"/style.qss";
    5. QResource::registerResource(resPath);
    6. QFile qss(qssPath);
    7. qss.open(QFile::ReadOnly);
    8. QByteArray qssBuf = qss.readAll();
    9. setStyleSheet(qssBuf);
    10. qss.close();
    11. QResource::unregisterResource(m_skinRecPath);
    12. m_skinRecPath = resPath;
    13. }

    以上我在自己的widget窗口上加载,也可以通过qApp->setStyleSheet(qssBuf);加载设置全局风格。

    效果图:

  • 相关阅读:
    C语言——自定义类型之结构体
    MapReduce编程模型——在idea里面邂逅CDH MapReduce
    Win10 笔记本本地摄像头提供 Rtsp 视频流服务
    QT 实现简单的天气 哈哈
    VR步进式漫游,轻松构建三维模型,带来展示新形式!
    Scala中类的继承、抽象类和特质
    [附源码]java毕业设计网上拍卖系统
    设计模式之工厂模式
    Mysql加密功能
    PromptDet: Towards Open-vocabulary Detection using Uncurated Images (ECCV2022)
  • 原文地址:https://blog.csdn.net/wu110112/article/details/126440695