gpt4 book ai didi

qt - QFontMetrics 为等宽字体提供奇怪的结果

转载 作者:行者123 更新时间:2023-12-04 15:57:05 27 4
gpt4 key购买 nike

有人向我解释这个测试程序的结果吗?

#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!

最佳答案

问题在于四舍五入。如果我使用 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

关于qt - QFontMetrics 为等宽字体提供奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54368707/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com