Эта функция называется qt_format_text(). Используется для внутренних нужд Qt, как я понял. Можешь посмотреть, например, исходник
QSize QItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;QSize QItemDelegate::sizeHint(const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
Q_ASSERT(index.isValid());
const QAbstractItemModel *model = index.model();
Q_ASSERT(model);
QVariant value = model->data(index, Qt::SizeHintRole);
if (value.isValid())
return qvariant_cast<QSize>(value);
// display
value = model->data(index, Qt::FontRole);
QString text = model->data(index, Qt::DisplayRole).toString();
QRect textRect;
QFont fnt = value.isValid() ? qvariant_cast<QFont>(value) : option.font;
if (!text.contains(QLatin1Char('\n'))) {
QFontMetrics fontMetrics(fnt);
textRect = QRect(0, 0, fontMetrics.width(text), fontMetrics.lineSpacing());
} else {
QRectF result;
qt_format_text(fnt, option.rect, Qt::TextDontPrint|Qt::TextDontClip,
text, &result, 0, 0, 0, 0);
textRect = result.toRect();
}
// decoration
QRect pixmapRect;
if (model->data(index, Qt::DecorationRole).isValid())
pixmapRect = QRect(0, 0, option.decorationSize.width(),
option.decorationSize.height());
// checkbox
QRect checkRect = check(option, textRect, model->data(index, Qt::CheckStateRole));
doLayout(option, &checkRect, &pixmapRect, &textRect, true);
return (pixmapRect|textRect|checkRect).size();
}
Как я понял в процессе трассировки проги, эта функция делает то, что тебе надо. Возможно ошибаюсь.