18

我在 QPainter 上的 Qt 程序中绘制文本和围绕它的各种元素。我需要获取该文本将占用的像素大小。

我可以以某种方式获得以像素为单位的大小,知道文本字符串和字体吗?

谢谢。

4

2 回答 2

33

您可以为此目的使用 QFontMetrics。以下是来自 Qt Docs 的示例。

 QFont font("times", 24);
 QFontMetrics fm(font);
 int pixelsWide = fm.width("What's the width of this text?");
 int pixelsHigh = fm.height();
于 2013-06-02T02:37:41.457 回答
2

QPainter 的 boundingRect() 将返回一个矩形,您可以使用它来获取“宽度”和“高度”:

        QPainter qp(this);
        QFont font = qp.font();
        font.setPixelSize(24);
        qp.setFont(font);
        qp.setPen(Qt::white);
        QString text = "Hello, World!";
        QRect br = qp.boundingRect(0, 0, 150, 30, 0, text);
        qDebug() << br.width();
        qDebug() << br.height();
于 2020-11-16T20:32:27.073 回答