Масштабирование QLabel для размещения содержимого текста и ничего более - PullRequest
3 голосов
/ 10 февраля 2012

Я создаю подкласс QLabel и вставляю его в QVBoxLayout, и у меня возникают проблемы с размером. На следующем снимке экрана показано, как выглядит мое приложение:

enter image description here

Желтый виджет сверху - мой QLabel, а макет по умолчанию. Мне бы хотелось, чтобы моя метка уменьшалась до размера текста, не устанавливая вручную значение setMinimumHeight(), однако это не позволило бы мне использовать строки длиннее ширины метки. Я проверил документацию на QString (именно это я передаю конструктору метки) и не могу найти способ извлечь размер текста. Можно ли как-нибудь динамически изменить размер метки, чтобы она соответствовала тексту без лишних пробелов?

1 Ответ

8 голосов
/ 10 февраля 2012

Да, вы можете узнать ширину текста через QFontMetrics из QLabel.Например:

QLabel *label = new QLabel("Text");
int w = label->fontMetrics().width(label->text());
qDebug() << Q_FUNC_INFO << w;
//in my case this results in 24px, so 6px per character.
...