Загрузка глобальной таблицы стилей Qt?

Как я могу загрузить таблицу стилей (ресурс стиля .qss) глобально с помощью Qt?

Я пытаюсь сделать вещи немного более эффективными, чем:

middleIntText -> setStyleSheet("QLineEdit {  border: 1px solid gray;
                                border-radius: 5px;padding: 0 8px;
                                selection-background-color:darkgray;
                                height:40px;font-size:15px;}");

Я думал, что следующее будет работать при загрузке QLineEdit один раз для всех виджетов QLineEdit:

файл qss:

QLineEdit {     border: 1px solid gray;
                border-radius: 5px;
                padding: 0 8px;
                selection-background-color:darkgray;
                height:40px;
                font-size:15px;}

файл cpp:

QApplication a(argc, argv);
QFile stylesheet("formStyle.qss");
stylesheet.open(QFile::ReadOnly);
QString setSheet = QLatin1String(stylesheet.readAll());
a.setStyleSheet(setSheet);

Может быть, это правильно, и я делаю что-то еще неправильно?


person Brandon Clark    schedule 27.07.2012    source источник
comment
Я разговаривал с некоторыми ребятами на форумах Qt и думаю, что могу знать что я должен сделать. Завтра отпишитесь с решением. В основном это может быть расположение файла .qss, синтаксис css или просто выбор правильного объекта для каскадирования (например, QMainWindow::setStyleSheet(QString)). Вышеописанный метод должен работать, как только я выясню, какой из трех.   -  person Brandon Clark    schedule 27.07.2012


Ответы (2)


Вы вызвали QStyle * QApplication::setStyle ( const QString & style ), который запрашивает объект QStyle для стиля из QStyleFactory.

Вместо этого следует вызывать void QApplication::setStyleSheet ( const QString & sheet ), который устанавливает таблицу стилей приложения.

person Bill    schedule 27.07.2012
comment
Ты прав. Хотя это ничего не меняет, но я изменил приведенный выше код, чтобы отразить эту часть в правильном синтаксисе. Я разместил комментарий под своим вопросом относительно предполагаемых ответов. Я должен получить фактический ответ завтра. - person Brandon Clark; 27.07.2012

Вышеупомянутая попытка является правильным синтаксисом, но есть причины, по которым она может не работать.

Возможные проблемы:

  1. Исходный файл (.qss) не извлекается

  2. Для применения каскада выбран неверный верхний виджет.

  3. Синтаксис кода .qss (CSS).

Причина, по которой я должен был задать свой вопрос выше, заключается в том, что у меня было две из этих трех проблем. Сначала мне нужно было указать правильное расположение файлов, а во-вторых, мне пришлось обратиться непосредственно к QWidget.

QFile stylesheet("G:/Applications/Projects/ProspectTracker/formStyle.qss");
stylesheet.open(QFile::ReadOnly);
QString setSheet = QLatin1String(stylesheet.readAll());
QWidget::setStyleSheet(setSheet);

@Bill Спасибо за помощь. Он указал, что я разместил .setStyle, а не .setStyleSheet. Приведенный выше пример кода больше не отражает этого, но если бы я не изменил это, ничего из того, что я сделал, не сработало бы.

person Brandon Clark    schedule 27.07.2012