更改默认应用程序字体
Change default application font
我有一个 Qt 应用程序可以解析一些 JSON 文件并输出其内容。我希望输出采用等宽字体,最简单的方法是将整个应用程序的默认字体更改为等宽字体。我如何在 Qt 中做到这一点?
只需在 QApplication
或 QWidget
:
上使用 setFont()
方法
QFont font("Courier New");
font.setStyleHint(QFont::Monospace);
QApplication::setFont(font);
注意 setStyleHint(QFont::Monospace)
行:它确保即使系统中不存在指定的字体系列,也会使用另一种合适的等宽字体。
此外,我认为最好为某个小部件设置字体,而不是整个应用程序:这为您的 UI 提供了更结构化的代码其扩张的情况。不过,这当然还是设计问题。
我想出在 Qt 中更改整个应用程序字体的唯一方法是使用样式表。对于应用程序初始化中的 PyQt class,您可以调用 self.setStyleSheet('QWidget {font: "Roboto Mono"}')
。由于样式表的级联特性,这会将所有小部件的字体设置为 Roboto Mono。
仅设置 QApplication.setFont(font)
并不总是对我有用。有时深度嵌套的 child 小部件似乎不尊重字体,例如 QTreeView 中的 headers。
我有一个 Qt 应用程序可以解析一些 JSON 文件并输出其内容。我希望输出采用等宽字体,最简单的方法是将整个应用程序的默认字体更改为等宽字体。我如何在 Qt 中做到这一点?
只需在 QApplication
或 QWidget
:
setFont()
方法
QFont font("Courier New");
font.setStyleHint(QFont::Monospace);
QApplication::setFont(font);
注意 setStyleHint(QFont::Monospace)
行:它确保即使系统中不存在指定的字体系列,也会使用另一种合适的等宽字体。
此外,我认为最好为某个小部件设置字体,而不是整个应用程序:这为您的 UI 提供了更结构化的代码其扩张的情况。不过,这当然还是设计问题。
我想出在 Qt 中更改整个应用程序字体的唯一方法是使用样式表。对于应用程序初始化中的 PyQt class,您可以调用 self.setStyleSheet('QWidget {font: "Roboto Mono"}')
。由于样式表的级联特性,这会将所有小部件的字体设置为 Roboto Mono。
仅设置 QApplication.setFont(font)
并不总是对我有用。有时深度嵌套的 child 小部件似乎不尊重字体,例如 QTreeView 中的 headers。