Russian Qt Forum
Сентябрь 30, 2024, 20:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QFontMetricsF::boundingRect() работает неверно  (Прочитано 2995 раз)
numlock
Гость
« : Август 13, 2010, 10:58 »

Здравствуйте.

Я пытаюсь вычислить высоту прямоугольника определенной ширины в который вписан текст, перенесенный по словам. Текст пишется шрифтом font на QGraphicsItem. Я использую QFontMetricsF::boundingRect, в который передаю прямоугольник QRectF(0, 0, width, 0), переменную int flags = Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap и сам текст (см. код внизу поста). Текст точно не влезает в заданную ширину, но функция, почему-то всегда возвращает прямогуольник высотой в одну строку. В чем может быть дело?

Код
C++ (Qt)
QFontMetricsF metrics = QFontMetricsF(font);
int flags = Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap;
qreal height = metrics.boundingRect(QRectF(0, 0, width, 0), flags, text()).height();
 

P.S. Текст точно можно перенести. Там есть пробелы, по которым это можно сделать.
Записан
BRE
Гость
« Ответ #1 : Август 13, 2010, 11:18 »

Код
C++ (Qt)
#include <QApplication>
#include <QFontMetrics>
#include <QStringList>
#include <QDebug>
 
int main(int argc, char** argv)
{
   QApplication app( argc, argv );
 
   QStringList args = app.arguments();
   if( args.size() < 2 )
   {
       qDebug() << "Allo";
       return -1;
   }
 
   QString text = args.join( " " );
   QFont font( app.font() );
   QFontMetricsF metrics = QFontMetricsF( font );
   int flags = Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap;
   qreal height = metrics.boundingRect( QRectF(0, 0, 100, 0), flags, text ).height();
 
   qDebug() << height;
 
   return 0;
}
 

Цитировать
[...]$ ./test asdasdasd
14
[...]$ ./test asdasdasd asdasdasdasdasdasd
27
[...]$ ./test asdasdasd asdasdasdasdasdasd asdasdasd asd asd asd asdasdasdas asd asd
79
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.184 секунд. Запросов: 20.