更改默认应用字体

Rom*_*rio 4 qt qtwidgets

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

kef*_*500 10

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

QFont font("Courier New");
font.setStyleHint(QFont::Monospace);
QApplication::setFont(font);
Run Code Online (Sandbox Code Playgroud)

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


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


Spe*_*cer 6

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

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