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

8 篇文章 0 订阅
1 篇文章 0 订阅

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中既可以统一风格,又可以单独定制。例如:

/*主窗口背景图*/
QMainWindow{
    border-image:url(./image/blue.jpg);
}
QPushButton{border:0px;border-radius:15px;font-weight:bold;color:red;}

/*特定按钮贴图*/
QPushButton#pushButton{
    color: white;
    font: bold 10pt;
    border:none;
    border-radius:5px;
    border-image:url(./image/button-yellow.png);
}

QPushButton#pushButton:hover{
    border-image:url(./image/button-blue.png) ;
}

QPushButton#pushButton:pressed{
    border-image:url(./image/button-red.png);
}
/*一般按钮样式*/
QPushButton:hover{
background:qlineargradient(x1:0, y1:0, x2:0, y2:1,
stop:0 rgba(100,100,100,200),
stop: 0.5 rgba(0,255,100,200), 
stop:1 rgba(100,100,100,200));
}
QPushButton:focus{
background:qlineargradient(x1:0, y1:0, x2:0, y2:1,
stop:0 rgba(150,150,150,150),
stop: 0.5 rgba(50,50,50,255), 
stop:1 rgba(0,0,0,200));
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值