Qt风格的sheet代码应该放在哪里?

Where should Qt style sheet code be placed?

我还有一个关于 Qt 的问题。我在 Qt Designer 工作,并且正在学习样式 sheets 是创建自定义外观的好方法。但是,我对代码应该放在哪里有疑问。

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

但是,假设我想更改 UI 表单中某些垂直布局的外观(背景颜色)。看来我无法右键单击它来更改设计器中的样式。相反,我被迫将代码放在项目的其他地方并使用 "setStyleSheet(...)" 方法。

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

我无意让样式成为事件驱动的,所以我只想在应用程序开始时设置它并完成它。

感谢任何帮助!

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

方法一:最佳方法。

创建一个文件,比如 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

方法二:头文件法

您可以将样式表字符串存储在头文件中并将其添加到源文件中。这不是一个好的方法或优雅的方法。 首选方法 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
....