从资源 QSS 文件设置样式表

问题描述 投票:0回答:2

在我的小部件中,我可以做类似的事情:

MyWindow::MyWindow(QWidget *parent) :
    QWidget(parent)
{
    ui.setupUi(this);
    setStyleSheet("QWidget { background-color: red }");  // <--- HERE
}

这会将小部件背景设置为红色。

我的资源中有一个 QSS 文件。我如何指示我的小部件从那里获取其样式表内容,而不是仅将 QSS 语法作为参数?

qt qtstylesheets
2个回答
28
投票

作为为每个小部件设置样式表的替代方法,您可以为整个应用程序加载并设置样式表。像这样的东西:

QApplication app( argc, argv );

// Load an application style
QFile styleFile( ":/style.qss" );
styleFile.open( QFile::ReadOnly );

// Apply the loaded stylesheet
QString style( styleFile.readAll() );
app.setStyleSheet( style );

在这种情况下,所有小部件都会自动从给定的样式表中选择其样式。


26
投票

明白了:您实际上必须从资源中“读取文件”,将其转换为 QString 并将其提供给 setStyleSheet。例如:

QFile file(":/qss/default.qss");
file.open(QFile::ReadOnly);
QString styleSheet = QLatin1String(file.readAll());
setStyleSheet(styleSheet);
© www.soinside.com 2019 - 2024. All rights reserved.