سؤال

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:

enter image description here

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?

هل كانت مفيدة؟

المحلول

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.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top