13

我有一个解析一些 JSON 文件并输出其内容的 Qt 应用程序。我希望输出采用等宽字体,最简单的方法是将整个应用程序的默认字体更改为等宽字体。我如何在 Qt 中做到这一点?

4

2 回答 2

23

只需使用orsetFont()上的方法:QApplicationQWidget

QFont font("Courier New");
font.setStyleHint(QFont::Monospace);
QApplication::setFont(font);

注意这一setStyleHint(QFont::Monospace)行:它确保即使系统中不存在指定的字体系列,也会使用另一种合适的等宽字体。


此外,在我看来,最好为某个小部件设置字体,而不是为整个应用程序设置字体:这为您的 UI 提供了更结构化的代码,以防其扩展。但是,当然,这仍然是一个设计问题。

于 2017-02-04T15:36:22.140 回答
6

我想出在 Qt 中更改整个应用程序字体的唯一方法是使用样式表。对于应用程序的 init 类中的 PyQt,您可以调用self.setStyleSheet('QWidget {font: "Roboto Mono"}'). 由于样式表的级联性质,这会将所有小部件的字体设置为 Roboto Mono。

只是设置QApplication.setFont(font)并不总是对我有用。有时深度嵌套的子小部件似乎不尊重字体,例如 QTreeView 中的标题。

于 2019-01-18T23:14:51.297 回答