当 OS 已关闭抗锯齿功能时,如何绘制抗锯齿的 QFont?

How do I draw a QFont anti-aliased when the OS has anti-alias turned off?

当我使用 QPainterdrawTextQPixmap 上使用 QFont 时,当 OS 具有抗锯齿时,它看起来抗锯齿别名已启用,但即使 我明确设置了画家的渲染提示和字体策略:

QPainter painter(&pixmap);
painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
font.setStyleStrategy(QFont::NoSubpixelAntialias); // I do not want clear-type

我知道 OS(在本例中为 Windows 7)能够在 OS 级别关闭抗锯齿文本时绘制抗锯齿文本,因为 visual studio 这样做。

如何让 Qt 覆盖此 OS 的抗锯齿设置?

搜索词:抗锯齿

您需要确保将 QFont::PreferAntialias 添加到您的 font.setStyleStrategy 调用中。像这样:

font.setStyleStrategy(QFont::NoSubpixelAntialias | QFont::PreferAntialias);