有人向我解释该测试程序的结果吗?
#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!
答案 0 :(得分:0)
问题出在四舍五入。如果我使用QFontMetricsF
而不是QFontMetrics
,结果是正确的
W : 11.4375
8*W : 91.5
WWWWWWWW: 91.5
但是我发现了另一件事。 QFontMetricsF::maxWidth()
应该返回qreal类型,但实际上它总是返回舍入值(在我的示例中为11)。它看起来像Qt中的错误。
https://bugreports.qt.io/projects/QTBUG/issues/QTBUG-73458?filter=allopenissues