Qt程序中不同字体的字号差异及KDE下字号列表获取方法
Qt程序中字体字号差异及KDE环境下字号列表获取
Qt的字体字号表现逻辑
Qt的字体字号表现取决于其使用的字体渲染后端:
- 在Windows平台,Qt直接调用系统原生字体接口,表现和Windows系统一致——不同字体的可选字号列表会存在差异(比如部分点阵字体只有固定的几个字号可选)。
- 在KDE(基于X11/Plasma)环境下,Qt默认使用Fontconfig作为字体后端,表现更接近GTK/macOS:大部分字体的可选字号列表是统一的可缩放字号范围,只有少数特殊点阵字体才会有固定的可选字号集合。
获取指定字体的可用字号列表(针对Windows/KDE特殊场景)
如果需要在Qt中获取某字体的可用字号列表,可以使用Qt的QFontDatabase类来实现,核心代码示例如下:
#include <QFontDatabase> #include <QDebug> void getFontSizes(const QString& fontName) { QFontDatabase db; // 获取指定字体的所有可用字号 QList<int> sizes = db.sizes(fontName); qDebug() << "字体" << fontName << "的可用字号:" << sizes; }
- 该方法在Windows平台会返回对应字体的原生可选字号列表;
- 在KDE环境下,对于可缩放字体,返回的是一个包含常用字号的列表(或空列表,此时可以使用任意字号进行缩放),对于点阵字体则返回其固定字号集合。
注意:在KDE等使用Fontconfig的环境中,大部分现代字体都是可缩放的,所以字号列表更多是参考性的,你可以直接设置任意数值的字号,Qt会通过Fontconfig进行渲染。
内容的提问来源于stack exchange,提问作者Igor
相关产品推荐
相关产品推荐

