QSS与Qt主程序做到界面分离

Qt中能够实现逻辑程序与界面分离,

主要是将按钮贴图,颜色绘制等放到qss文件中,然后由相应的窗口加载就可以。

有几点注意:

1.不同的窗口可以加载不同的qss文件。例如程序中有多个窗口,那么你可以为每个窗口写一个qss文件,这样每个窗口就有自己独特的风格了。

  而且更换皮肤时,只要将加载的qss文件更换一下就可以。

  加载qss的相关代码:

        //载入qss界面文件

    QFile  qss("style.qss");    //绿色中为qss资源文件的路径,根据需要更改
    if(!qss.open(QFile::ReadOnly))
    {
        qDebug("can not open qss !");
        return 0;
    }
    w.setStyleSheet(qss.readAll());

上面中 w  是窗口对象,如果QApplication a(argc, argv); 中 a.setStyleSheet(qss.readAll());则默认为整个程序中所有窗口都是这个qss风格。

2.qss中既可以统一风格,又可以单独定制。例如:

[cpp]  view plain copy print ?
  1. /*主窗口背景图*/  
  2. QMainWindow{  
  3.     border-image:url(./image/blue.jpg);  
  4. }  
  5. QPushButton{border:0px;border-radius:15px;font-weight:bold;color:red;}  
  6.   
  7. /*特定按钮贴图*/  
  8. QPushButton#pushButton{  
  9.     color: white;  
  10.     font: bold 10pt;  
  11.     border:none;  
  12.     border-radius:5px;  
  13.     border-image:url(./image/button-yellow.png);  
  14. }  
  15.   
  16. QPushButton#pushButton:hover{  
  17.     border-image:url(./image/button-blue.png) ;  
  18. }  
  19.   
  20. QPushButton#pushButton:pressed{  
  21.     border-image:url(./image/button-red.png);  
  22. }  
  23. /*一般按钮样式*/  
  24. QPushButton:hover{  
  25. background:qlineargradient(x1:0, y1:0, x2:0, y2:1,  
  26. stop:0 rgba(100,100,100,200),  
  27. stop: 0.5 rgba(0,255,100,200),   
  28. stop:1 rgba(100,100,100,200));  
  29. }  
  30. QPushButton:focus{  
  31. background:qlineargradient(x1:0, y1:0, x2:0, y2:1,  
  32. stop:0 rgba(150,150,150,150),  
  33. stop: 0.5 rgba(50,50,50,255),   
  34. stop:1 rgba(0,0,0,200));  
  35. }  

上述代码中,通过 # 后加控件名字就可以专门为该控件设计风格。这样qss就能具体到每个控件的界面美化,而不用在程序里掺杂,做到界面分离。相关的其他qss的用法可以查阅qt文档。
下面是测试例子效果;

QSS与Qt主程序做到界面分离_第1张图片


原文地址:http://blog.csdn.net/wangtaohappy/article/details/8777789


你可能感兴趣的:(QSS与Qt主程序做到界面分离)