Qt样式表代码应该放在哪里?

时间:2016-03-27 14:14:12

标签: qt stylesheet qt-designer

我还有关于Qt的另一个问题。我在Qt Designer工作,我正在学习样式表是创建自定义外观的好方法。但是,我对代码应该存在的位置有疑问。

在Qt Designer中,您可以选择右键单击窗口小部件并更改样式表选项。这实际上将样式表代码放在UI表单中,稍后将在幕后处理。

但是,我想说我想要更改UI表单中某些垂直布局的显示(背景颜色)。我没有能力右键单击它来改变设计师的风格。相反,我被迫将代码放在项目的其他地方并使用" setStyleSheet(...)"方法

我的问题:我应该在哪里放置此代码?参考所有帮助文档,他们似乎只是使用setStyleSheet方法,但没有提到代码应该存在的位置。它应该存在于构造函数中吗?或者是否有另一个区域(如配置文件)应包含此内容?

我无意让造型成为事件驱动的,所以我只是想在应用程序的开头设置它并完成它。

我感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

样式表只是一个需要传递给setStyleSheet的字符串。您可以选择存储字符串的位置和方式。有几种方法可以做到。

方法1:最佳方法。

创建一个文件,比如widget.qss并将样式表数据存储在其中。使用QFile读取其内容并设置样式表。

/* QSS File (widget.qss) */
QWidget {
    background: gray;
    color: darkblue;
}

/* you source file (mywidget.cpp) */
....
QFile styleFile( ":/widget.qss" );
styleFile.open( QFile::ReadOnly );
mywidget->setStyleSheet( QString::fromLatin1( styleFile.readAll() ) );
styleFile.close();
....

/* QRC File (resources.qrc) */
<!DOCTYPE RCC><RCC version="1.0">
    <qresource prefix='/'>
        ....
        <file>widget.qss</file>
    </qresource>
</RCC>

/* QMake Project File (project.pro) */
....
RESOURCES += resources.qrc

方法2:头文件方法

您可以将样式表字符串存储在头文件中,并将其添加到源文件中。这是一种好方法或优雅的方式。 首选方法1

/* Header File (mywidgetstyle.h) */

#ifndef MYWIDGETSTYLE_H
#define MYWIDGETSTYLE_H

include <QString>

static QString mywidget_style = QString(
    "QWidget {"                     \
    "    background: gray;"         \
    "    color: darkblue;"          \
    "}"
);

/* Source File (mywidget.cpp) */

#include "mywidgetstyle.h"

....
setStyleSheet( mywidget_style )l
....