Reputation:
I’m subclassing QLabel and inserting it into a QVBoxLayout and I’m having a problem with the size. The following screenshot is how my application currently looks:
The yellow widget on the top is my QLabel
, and the layout is the default one. I’d like my label to scale down to fit the text without manually setting it with setMinimumHeight()
, however that wouldn’t allow me to use strings longer than the width of the label. I’ve checked the documentation for QString
(which is what I am passing to the label’s constructor) and I can’t find a way to extract the size of the text. Is there any way I can dynamically change the size of my label to fit the text, with no excess space?
Upvotes: 3
Views: 5853
Reputation: 2004
Yes you can find out the width of the text through the QFontMetrics
of the QLabel
. For example:
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.
Upvotes: 8