這發生在Linux上。爲什麼QFontMetrics :: lineSpacing()小於字符邊界框的高度?
問題示出了執行此代碼(我在小部件的塗料事件繪製)時:
painter.drawText(0, 0, 1000, 1000, 0, QString("0"), &charBoundingBox);
qDebug() << "bounding box height" << charBoundingBox.height();
qDebug() << "lineSpacing" << painter.fontMetrics().lineSpacing();
qDebug() << "leading" << painter.fontMetrics().leading();
qDebug() << "height" << painter.fontMetrics().height();
qDebug() << painter.font();
它輸出:
bounding box height 11
lineSpacing 7
leading -1
height 8
QFont("Digital-7,10,-1,5,50,0,0,0,0,0")
通知邊界框的高度爲字符爲11
,行間距爲7
。這部分是因爲領先是負面的,但即使沒有,字體高度仍然較小。
Qt如何計算它返回的字符邊界框?它的高度顯然不是來自fontMetrics::height
和fontMetrics::leading
。
爲什麼不呢?排版很複雜。 – ybungalobill
因爲如果行空間小於字符,字符會重疊。事實上,這是首先提醒我的問題 – sashoalm