2010-09-13 129 views
4

如何将QGraphicsObject上的字体从点大小转换为像素大小?我需要这样做,所以当我使用QGraphicsScene::render()打印我的QGraphicsScene时,字体看起来是正确的。如何从点大小计算qfont像素大小

+0

您在最终结果中寻找什么?为什么默认的'render()'调用不适合你? – 2010-09-13 17:31:03

+0

我希望将场景打印在纸上,并且看起来像是在屏幕上进行的。默认的'render'会为除文本以外的所有内容生成正确的结果。我的字体是用点来指定的,当我传递一个'QPainter'创建的'QPainter'时,默认'render()'使字体变大。这是我的原始问题:http://stackoverflow.com/questions/3679837/how-to-print-a-qgraphicsscene-that-has-text-and-graphics – 2010-09-13 17:57:23

回答

7

可能是班级QFontMetrics将完成这项工作。只需创建你想要的QFont,设置它的点大小。然后在你的QFont上创建QFontMetrics对象。

+0

我很难搞清楚如何使用QFontMetrics做这个。我也看过QFontInfo,它给了我当前的像素大小,但我不知道该怎么做。到目前为止,font.setPixelSize(font.pointSize())似乎可行,但我不知道为什么 - 看起来似乎不可靠。思考? – 2010-09-13 17:19:24

+0

font.setPointSize(yourPointSize); QFontMetrics fm(font); fm.height()< - 这会给你以像素为单位的字体高度。点大小与DPI有关。所以可能在您的dpi 1px接近1点大小。 – 2010-09-14 19:06:34