Para o Qt 4.6.x, como dimensionar automaticamente o texto para caber em uma largura especificada?

Dentro do meu QGraphicsRectItem :: paint (), estou tentando desenhar o nome do item dentro de seu rect (). No entanto, para cada um dos itens diferentes, eles podem ter largura variável e nomes semelhantes podem ter comprimento variável.

Atualmente, estou começando com um tamanho máximo de fonte, verificando se ele se encaixa e diminuindo até encontrar um tamanho de fonte adequado. Até agora, não consegui encontrar uma maneira rápida e fácil de fazer isso. Existe uma maneira melhor ou mais eficiente de fazer isso?

Obrigado!

void checkFontSize(QPainter *painter, const QString& name) {
 // check the font size - need a better algorithm... this could take awhile
 while (painter->fontMetrics().width(name) > rect().width()) {
  int newsize = painter->font().pointSize() - 1;
  painter->setFont(QFont(painter->font().family(), newsize));
 }
}

questionAnswers(7)

yourAnswerToTheQuestion