Как получить размеры отображаемого текста в QPainter?

Я рисую в своей программе Qt на QPainter текст и различные элементы вокруг него. Мне нужно получить размеры в пикселях, которые будет занимать этот текст.

Можно ли как-то получить размеры в пикселях, зная текстовую строку и шрифт?

Спасибо.


person shau-kote    schedule 02.06.2013    source источник


Ответы (2)


Вы можете использовать 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();
person Kunal    schedule 02.06.2013
comment
Обратите внимание, что методы QPainter boundingRect() также будут делать это с текущим шрифтом рисовальщика. - person bhaller; 18.04.2020

Функция boundingRect() QPainter вернет прямоугольник, который можно использовать для получения ширины и высоты:

        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();
person 8Observer8    schedule 16.11.2020