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工作正常
答案 0 :(得分:0)
您正在使用比例字体计算文字的宽度,其中字符/
和!
可能确实具有不同的宽度,因此" /的总宽度为家/用户"可能与" / homeUsers!"。
显然,对于Windows字体Calibri而言,情况并非如此,该字体在Windows Vista及更高版本中可用。如果您没有在Linux中安装它,则会使用substitute,这可能会显示给定的行为。
推荐阅读:QFont的详细说明。重要的是
Qt将使用具有指定属性的字体,或者如果不存在匹配的字体,Qt将使用最接近的匹配安装字体。实际使用的字体属性可从QFontInfo对象中检索。