Qt如何选择默认样式?

时间:2018-01-04 10:17:08

标签: c++ qt qapplication qstyle

在Qt GUI应用程序中,QApplication::style()->objectName()将返回当前样式,例如" windowsvista"。

如何/在何处选择此默认样式,以及它用于决定哪些信息?

2 个答案:

答案 0 :(得分:1)

在文档中:

  

Qt包含一组模拟样式的QStyle子类   Qt支持的不同平台(QWindowsStyle,QMacStyle等)。

您可以使用键设置样式:windowsvista,例如fusionmacintosh等。使用任何键时,返回的样式将是QStyle的子类。根据您使用的平台,您可以访问一定数量的密钥。

  

如何/在何处选择此默认样式

这是在QStyleFactory来源file中完成的。您还可以查看QStyle源代码file,了解正在发生的事情。

  

用什么信息来决定

默认样式取决于平台,然后您可以在此平台上的处置中选择任何样式。

答案 1 :(得分:1)

Qt附带内置样式,这些是(在我的5.9.2上):

  • Windows
  • WindowsXP
  • WindowsVista
  • 的Android
  • Fusion
  • 的Macintosh

每个人都有自己的类,派生自QStyle

要查看哪些可用(取决于Qt构建配置):

const QStringList styles = QStyleFactory::keys();
for(QString s : styles)
{
    qDebug() << s;
}

自定义插件(即QTDIR / plugins / styles目录中的库)也会显示(如果存在)。

如何选择默认样式?

默认样式在QApplication方法style() qapplication.cpp 文件中按以下顺序搜索:

  1. 样式覆盖,如果由环境变量QT_STYLE_OVERRIDE设置(在QApplicationPrivate::process_cmdline()中设置);
  2. QApplicationPrivate::desktopStyleKey()返回的样式(此方法从当前平台主题加载样式列表,并从QStyleFactory::keys()列表中选择此列表中的第一个名称);
  3. QStyleFactory::keys()列表中的第一项。
  4. 如果无法确定样式,则在声明

    后方法将返回0
    Q_ASSERT(!"No styles available!");