1. 程式人生 > >[QT筆記]用圖片自定義QCheckBox樣式

[QT筆記]用圖片自定義QCheckBox樣式

https://blog.csdn.net/yueashuxia/article/details/52366355

記錄一下大致的過程,避免將來忘記。

實現環境:Qt Creator 3.2.1 Based on Qt5.3.2 (GCC 4.9.2, 32bit)

專案型別:Qt Widgets Application

1.首先在專案中新增Qt資原始檔,命名為resource.qrc。

2.然後在資原始檔中新增字首,預設是/new/prefix1,我將它改為/CheckBox。

3.然後向/CheckBox中新增檔案checked.png、uncheked.png、checkedDisabled.png。

新增檔案時,選中某個專案資料夾以外路徑下的圖片後,會提示“無效的檔案路徑,檔案/***/***/checked.png 沒有在資原始檔的子目錄中,您可以選擇此檔案到一個有效的路徑”。此時選擇“複製”,將圖片複製到專案資料夾下。可以在專案資料夾裡面建立資料夾res,進入該資料夾後,選擇“儲存”。之後也是將圖片儲存到res資料夾下。

4.在檔案管理器中開啟專案資料夾下的res資料夾,新建"myStyle.qss"檔案,用文字編輯器開啟,填寫以下內容然後儲存:

  1. QCheckBox{  
  2.     spacing: 5px;  
  3. }  
  4. QCheckBox::indicator{  
  5.     width: 15px;  
  6.     height: 15px;  
  7. }  
  8. QCheckBox::indicator:unchecked{  
  9.     image:url(:/CheckBox/res/unchecked.png);  
  10. }  
  11. QCheckBox::indicator:checked{  
  12.     image:url(:/CheckBox/res/checked.png);  
  13. }  
  14. QCheckBox::indicator:checked:disabled{  
  15.     image:url(:/CheckBox/res/checkedDisabled.png);  
  16. }  

5.在/CheckBox字首中新增myStyle.qss檔案,這一次不必複製到專案資料夾下,因為它已經在專案資料夾下了。

6.儲存資原始檔resource.qrc。

7.接著在main.cpp檔案中新增程式碼,讀取qss檔案並設定程式為自定義的樣式:

  1. int main(int argc, char *argv[])  
  2. {  
  3.     QApplication a(argc, argv);  
  4.     //獲取並設定程式為自定義樣式
  5.     QFile styleSheet(":/CheckBox/res/myStyle.qss");  
  6.     styleSheet.open(QIODevice::ReadOnly);  
  7.     a.setStyleSheet(styleSheet.readAll());  
  8.     MainWindows w;  
  9.     w.show();  
  10.     return a.exec();  
  11. }  

8.然後可以在程式中新增CheckBox檢視效果:


9.QCheckBox可以支援自定義的效果還有很多,以下是Qt Style Sheets Examples當中關於QCheckBox樣式的示例:

  1. QCheckBox {  
  2.     spacing: 5px;  
  3. }  
  4. QCheckBox::indicator {  
  5.     width: 13px;  
  6.     height: 13px;  
  7. }  
  8. QCheckBox::indicator:unchecked {  
  9.     image: url(:/images/checkbox_unchecked.png);  
  10. }  
  11. QCheckBox::indicator:unchecked:hover {  
  12.     image: url(:/images/checkbox_unchecked_hover.png);  
  13. }  
  14. QCheckBox::indicator:unchecked:pressed {  
  15.     image: url(:/images/checkbox_unchecked_pressed.png);  
  16. }  
  17. QCheckBox::indicator:checked {  
  18.     image: url(:/images/checkbox_checked.png);  
  19. }  
  20. QCheckBox::indicator:checked:hover {  
  21.     image: url(:/images/checkbox_checked_hover.png);  
  22. }  
  23. QCheckBox::indicator:checked:pressed {  
  24.     image: url(:/images/checkbox_checked_pressed.png);  
  25. }  
  26. QCheckBox::indicator:indeterminate:hover {  
  27.     image: url(:/images/checkbox_indeterminate_hover.png);  
  28. }  
  29. QCheckBox::indicator:indeterminate:pressed {  
  30.     image: url(:/images/checkbox_indeterminate_pressed.png);  
  31. }  

擴充套件閱讀:Qt Style Sheet實踐(三):QCheckBox和QRadioButton