QT外部调用qss样式表方法

以利用qss样式在主窗口添加背景图片为例:

①新建qss文件
建立文本文件,内容先空着一会添加。更改文件后缀名为qss。本例中qss为style.qss

②创建qrc资源文件
右键点项目 “Add New(添加新文件)”->”QT Resource file(QT资源文件)” 生成一个qrc文件。本例中qrc为src.qrc

③将qss文件添加进qrc中


注意前缀改成“/”,否则外部调用无法找到
添加图片资源方式同上

④新建一个loadCss类,供调用qss使用

loadcss.h

1
2
3
4
5
6
7
8
9
10
11
12
13
#ifndef LOADCSS_H
#define LOADCSS_H
#include <QWidget>
#include <QFile>
#include <QTextStream>

class loadCss
{
public:
    loadCss(QString qssName,QWidget *parent);
};

#endif // LOADCSS_H

loadcss.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "loadcss.h"

loadCss::loadCss(QString qssName,QWidget *parent)
{

    QFile data(qssName);

    QString qssFile;

    if(data.open(QFile::ReadOnly))//读取文件流
    {
        QTextStream styleIn(&data);

        qssFile = styleIn.readAll();

        data.close();

        parent->setStyleSheet(qssFile);//对目标窗体进行样式设置
    }
}

④在目标窗体类中添加调用样式代码
这里选在主窗体类中,即在mainWindows.cpp添加

1
2
3
4
5
//头部要#include "loadcss.h"
 loadCss(QString(":/style.qss"),this);

//也可以直接添加样式,当然相对外部加载来说不够灵活
// this->setStyleSheet("#MainWindow {border-image: url(:/images/bg.jpg);}");

⑤编辑qss样式

style.css

1
#MainWindow {border-image: url(:/images/bg.jpg);}

MainWindow为窗体名
bg.jpg我用了一种纯黑色的图所以效果如下

qss其实和html的css是一样的,只不过这里的窗体名和空间名不要弄错。更多QT技巧,欢迎大家继续关注。

BeiTown
2013.01.27

本文链接:QT外部调用qss样式表方法

转载声明:BeiTown原创,转载请注明来源:BeiTown's Coder 编码之源,谢谢


Tags: , , , , ,

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>