QT: setStyleSheet из файла QSS ресурса? - PullRequest
12 голосов
/ 27 января 2011

В моем виджете я могу сделать что-то подобное:

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

Это установит красный цвет фона виджета.

У меня есть файл QSS в моих ресурсах.Как я могу дать указание моему виджету получать оттуда содержимое таблицы стилей, а не принимать синтаксис qss в качестве параметра?

Ответы [ 2 ]

19 голосов
/ 07 февраля 2012

В качестве альтернативы настройке таблицы стилей для каждого виджета, вы можете просто загрузить и установить таблицу стилей для всего приложения. Примерно так:

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 );

В этом случае все виджеты будут автоматически выбирать свои стили из заданной таблицы стилей.

17 голосов
/ 27 января 2011

Понятно: вам действительно нужно «прочитать файл» из ресурсов, преобразовать его в QString и передать его в setStyleSheet.Например:

QFile file(":/qss/default.qss");
file.open(QFile::ReadOnly);
QString styleSheet = QLatin1String(file.readAll());
setStyleSheet(styleSheet);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...