В приложении Qt GUI QApplication::style()->objectName()
вернет текущий стиль, например «windowsvista».
Как / где он выбирает этот стиль по умолчанию и какую информацию он использует для принятия решения?
Qt поставляется со встроенными стилями, это (на моем 5.9.2):
каждый из которых имеет свой собственный класс, производный от QStyle
,
Чтобы увидеть, какие из них доступны (это зависит от конфигурации сборки Qt):
const QStringList styles = QStyleFactory::keys();
for(QString s : styles)
{
qDebug() << s;
}
Пользовательские плагины (т.е. библиотеки в каталоге QTDIR / plugins / styles) также будут показаны, если они есть.
Как выбрать стиль по умолчанию?
Стиль по умолчанию ищется в QApplication
метод style()
, в qapplication.cpp файл в следующем порядке:
QT_STYLE_OVERRIDE
(это установлено в QApplicationPrivate::process_cmdline()
);QApplicationPrivate::desktopStyleKey()
(этот метод загружает список стилей из текущей темы платформы и выбирает имя из этого списка, которое присутствует в QStyleFactory::keys()
список);QStyleFactory::keys()
список.Если стиль не может быть определен, метод вернет 0 после подтверждения
Q_ASSERT(!"No styles available!");
В документации:
Qt содержит набор подклассов QStyle, которые эмулируют стили
различные платформы, поддерживаемые Qt (QWindowsStyle, QMacStyle и т. д.).
Вы можете установить стиль, используя клавишу: windowsvista
например, fusion
, macintosh
и т. д. При использовании любого ключа возвращаемый стиль будет подклассом QStyle. В зависимости от используемой вами платформы у вас будет доступ к определенному количеству ключей.
Как / где он выбирает этот стиль по умолчанию
Это сделано в QStyleFactory источник файл. Вы также можете посмотреть исходный код QStyle файл чтобы понять, что происходит.
какую информацию он использует, чтобы решить
Стиль по умолчанию зависит от платформы, и затем вы можете выбрать любой стиль из имеющихся на этой платформе клавиш.