Qt如何从外部Qt样式表文件中应用样式?

Owe*_*wen 29 css c++ user-interface qt

我希望用户能够通过简单地加载他们的OWN Qt样式表文件来自定义我们应用程序的默认外观.我们如何实现这一目标?谁能给我一个良好的开端?

Jér*_*ôme 37

假设用户的样式表已命名stylesheet.qss并位于应用程序文件夹中.

您可以使用-stylesheet参数在启动应用程序时加载样式表:

myapp->stylesheet = stylesheet.qss;
Run Code Online (Sandbox Code Playgroud)

但这需要您的用户知道如何使用参数启动应用程序.

您还可以在应用程序中添加设置对话框,用户可以在其中选择样式表路径.

然后,您可以使用QApplication :: setStyleSheet()打开此文件,加载内容并将其设置为您的应用程序:

 QFile File("stylesheet.qss");
 File.open(QFile::ReadOnly);
 QString StyleSheet = QLatin1String(File.readAll());

 qApp->setStyleSheet(StyleSheet);
Run Code Online (Sandbox Code Playgroud)

Qt在网上提供了一个可能有用的示例.

  • 严肃地说,不要在变量名上使用`CamelCase`,这很令人困惑.特别是通用名称,例如`File`或`StyleSheet`.如果那些是班级名字,没有人会感到惊讶. (6认同)
  • 你能说明如何(如果可能的话)使用多个样式表吗?例如:我需要为特定布局使用样式表,为第二个布局使用另一个样式表.最后,是否可以将样式表链接到窗口小部件,而不是应用程序? (4认同)