С有人向我解释这个测试程序的结果吗?
#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。但是,QF占度量::width返回92!
发布于 2019-02-01 16:36:12
问题出在四舍五入。如果我使用QFontMetricsF而不是QFontMetrics,结果是正确的
W : 11.4375
8*W : 91.5
WWWWWWWW: 91.5但我发现了另一件奇怪的事。QFontMetricsF::maxWidth()应该返回qreal,但实际上它总是返回四舍五入的值(在我的示例中是11)。它看起来像是Qt中的bug。https://bugreports.qt.io/projects/QTBUG/issues/QTBUG-73458?filter=allopenissues
https://stackoverflow.com/questions/54368707
复制相似问题