繁体   English   中英

QFontMetrics.width()在Linux中未返回正确的值

[英]QFontMetrics.width() not returning the correct value in linux

QString folderPath = "/home/Users"
Q_UNUSED(option);
Q_UNUSED(widget);

painter->setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform);

painter->setPen(QPen(QColor(16,87,98),2));
painter->setBrush(Qt::NoBrush);

painter->drawRect(m_bounds);
m_pathItem->setPos(m_bounds.topLeft());

QFont font( "Calibri" );
font.setPixelSize(14);
font.setBold(false);
painter->setFont( font );

painter->setPen(QColor(16,87,98));

QFontMetrics fm = painter->fontMetrics();
fm.width(folderPath) // Returns 71 

当我使用下面的字符串像素时返回的是不同的

QString folderPath = "/homeUsers!"
fm.width(folderPath) // Returns 73

这仅在linux中发生,Windows正常工作

您正在使用比例字体(其中的字符/!计算文本的宽度! 可能确实具有不同的宽度,因此“ / home / Users”的总宽度可能与“ / homeUsers!”不同。

显然,Windows Vista和更高版本中没有提供Windows字体Calibri 如果您没有在Linux中安装它,则使用替代品 ,它可能会显示给定的行为。

推荐阅读: QFont的详细描述。 重要的部分是

Qt将使用具有指定属性的字体,或者如果不存在匹配的字体,则Qt将使用最接近的匹配安装字体。 可以从QFontInfo对象检索实际使用的字体的属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM