【发布时间】:2019-01-25 15:51:40
【问题描述】:
有人向我解释一下这个测试程序的结果吗?
#include <QApplication>
#include <QDebug>
#include <QFontMetrics>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QFont font;
font.fromString("Monospace,14");
QFontMetrics fm(font);
qDebug() << "W : " << fm.width('W');
qDebug() << "8*W : " << 8*fm.width('W');
qDebug() << "WWWWWWWW: " << fm.width("WWWWWWWW"); // 8*W
return 0;
}
用 Qt5.11 编译这段代码后,我得到了这样的结果:
W : 11 8*W : 88 WWWWWWWW: 92
这个等宽字体的一个字符“W”的大小是 11。我希望由 8 个这样的字符组成的字符串的大小应该是 88。但是 QFontmetrics::width 返回 92!
【问题讨论】:
-
仅供参考,因为我也在寻找解释,看来 width() 现在已经过时了doc.qt.io/qt-5/qfontmetricsf-obsolete.html#width-1
-
无法复制它。我看到 21,168,168 .....Windows Qt 5.12
-
Linux Qt 5.12: 11,88,92
-
在 Windows 7 上的 Qt 5.6.3 或 Qt5.9.1 上无法重现。在使用
horizontalAdvance()而不是width()时,您会得到类似的结果吗? -
@Mike 是的,horizontalAdvance() 给出相同的结果
标签: qt qfont qfontmetrics