Как получить всю таблицу стилей Qt для QMacStyle

Можно ли получить текстовый файл всей таблицы стилей Qt5 для QMacStyle ( или его эквивалент QProxyStyle, который, по-видимому, используется в Qt5)?

Я надеюсь получить список всех пар свойство:значение («фоновый цвет», «граница-радиус», «маржа-верх», «заполнение» и т. д.), а также их настройки по умолчанию, которые используется для каждого из общих виджетов (QPushButton, QTabBar и т. д.).

Qt5 на Mac OSX выглядит великолепно благодаря всем родным виджетам (см., например, Галерея виджетов в стиле Macintosh). Я хотел бы выполнить некоторые хирургические замены ряда свойств стиля в своем приложении, но в остальном сохранить собственный внешний вид. (Альтернативный взгляд на проблему или, по крайней мере, на ту же конечную цель представлен в моем связанном вопросе Как переопределить только одну пару свойство:значение в Qt StyleSheet.)

Если бы я знал полный эквивалент Qt StyleSheet для QTabBar или QPushButton, я мог бы реконструировать родной внешний вид в моих собственных вызовах widget->setStyleSheet(), добавив несколько необходимых настроек.

Я обыскал весь каталог Qt5.4.0 в надежде найти файл *.qss, представляющий стиль OSX, но безрезультатно (я нашел многообещающе названный examples/widgets/widgets/stylesheet/qss/default.qss, однако все, что он говорит внутри, это //* empty stylesheet *//). Я исчерпал свои идеи, запустив grep с полным исходным каталогом Qt5, включая qt-everywhere-enterprise-src-5.4.0/qtbase/src/widgets/styles/, который действительно может содержать подробности, но не в очень удобоваримой форме).

Спасибо --


person lcikgl    schedule 03.03.2015    source источник
comment
случайный результат в Интернете   -  person GPPK    schedule 04.03.2015
comment
Спасибо @GPPK, это правильная идея, однако, похоже, это чей-то собственный стиль для Mac в их собственном проекте, а не эквивалент значений по умолчанию QMacStyle.   -  person lcikgl    schedule 04.03.2015


Ответы (1)


QMacStyle — это подкласс QStyle, который использует HITheme Apple для рисования (ищите файлы qmacstyle_mac*, чтобы увидеть реализацию), поэтому таблицы стилей для получения нет.

person Linville    schedule 04.03.2015
comment
ОК, @Linville, спасибо - вопрос новичка после множества поисков в Интернете и справочных страницах: правильно ли я понимаю, что QStyle() и QStyleSheet() - это два совершенно разных способа стилизации QWidgets, и они взаимоисключающие, т.е. вы должны выбрать тот или иной подход? - person lcikgl; 05.03.2015
comment
Начинает казаться, что QStyle() и таблицы стилей действительно взаимоисключающие, когда я вижу такие руководства, как это: цвет фона QWidget - person lcikgl; 06.03.2015
comment
QWidget#setStyle говорит Warning: Qt style sheets are currently not supported for custom QStyle subclasses. We plan to address this in some future release. Возможно, этот комментарий применим здесь - person lcikgl; 06.03.2015
comment
Здесь мы приближаемся к твердому пониманию. В этом посте предполагается, что таблицы стилей находятся на уровне выше QStyle(). - person lcikgl; 06.03.2015
comment
Чтобы понять правильный ответ @Linville с точки зрения новичка, нужно понимать, что QStyle() и таблицы стилей существуют на разных уровнях. Мой первоначальный вопрос был на плохой предпосылке. Таблицы стилей реализованы поверх QStyle(). В qtbase/src/widgets/kernel/qapplication.cpp мы видим, что QApplication::setStyleSheet() создает экземпляр QStyleSheetStyle (подкласс QStyle) и заменяет им таблицу стилей приложения. Таким образом, вызов setStyleSheet() полностью вытесняет QMacStyle. Нужно выбрать работу полностью в QStyleSheetStyle() (через setStyleSheet()) или полностью в QMacStyle(). - person lcikgl; 06.03.2015