+-
为什么Qt中的字体会出现模糊或像素化?

我的所有字体都出现了像素化,所以我用了 AntiAliasing 但却无济于事。你可以看到图像本身的像素化字体。

enter image description here

这是我目前使用的代码

butt1 = QtWidgets.QLabel("""Scrappr""")
font = QtGui.QFont()
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
font.setPixelSize(22)
font.setFamily('Segoe UI Bold')
butt1.setFont(QtGui.QFont(font))

我在SO,qtforums等网站上尝试了不同的解决方案,但都没有用:(

我试过

不同的组合 ClearType text 但它没有工作了,因为,默认情况下,所有的文字显示良好的Windows和铬 不过Qt 只是,它变得像素化。

把windows aero主题换成经典主题...

但都无济于事。

以下是我的电脑规格。

windows: 7终极版 PySide2版本: 5.14.2.1 分辨率: 1360 X 768 1360 X 768
2
投票

试着看看PyQt5使用的字体。

import PyQt5
from pyQt5 import QtGui
dir(QtGui.QFont)

结果会显示你所需要的所有QFond和字体都可以使用。

[..., 'Helvetica',...,'SansSerif',..., 'Serif',..., 'Times', ...

你可以尝试添加你的自定义字体,但你需要测试每个字体。

比如说。文件 告诉我们。

在Windows中,如果请求使用 "Courier "字体,则会自动改为 "Courier New",这是Courier的改进版本,可以实现平滑缩放。旧的 "Courier "位图字体可以通过设置PreferBitmap样式策略来选择(见setStyleStrategy()).一旦找到一个字体,其余的属性将按优先级顺序进行匹配。

fixedPitch()

pointSize() (see below)

weight()

style()
2
投票

我去年正好使用Qt工作,我使用qml来构建我的应用程序的UI部分。

Qt本身更喜欢我们使用qml来构建UI,因为他们已经编写了一个UI引擎,与旧的引擎相比,它能更好的渲染所有的东西。

在PyQt的情况下,你使用的是Python的方法,而这种方法通常是不被推荐的,我并不是说qml的版本是完美的像素,它在绘制曲线方面仍然很糟糕(但这不是我们通常需要的东西)。就你的问题而言,qml对你来说很好用(它的文本渲染效果更好)。

你可能在寻找qml的学习资源时有点困难。但至少可以试一试,是的,它比只用Python的方法要简单得多。