Внутри моего QGraphicsRectItem:: paint(), я пытаюсь нарисовать имя элемента в его rect(). Однако для каждого из разных элементов они могут иметь переменную ширину, и аналогичные имена могут иметь переменную длину.
В настоящее время я начинаю с максимального размера шрифта, проверяя, подходит ли он и уменьшает его, пока не найду размер шрифта, который подходит. До сих пор я не смог найти быстрый и простой способ сделать это. Есть ли лучший или более эффективный способ сделать это?
Спасибо!
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));
}
}