I need a QLabel
whose width should not adapt to the contained text but which is resizeable by the user (or the layout to be exact). If the text is too long for the width of the QLabel
it should simply be clipped.
This question is somehow the reverse of How to make QLabel expand width geometry to accommodate text. However, the content of that question didn't help me. Neither did Setting text on a QLabel in a layout, doesn't resize.
Background
The QLabel
will display identifiers (single words) coming from another system. Sometimes those identifiers change many times a second, which makes the whole layout flickering. The QLabel
is part of a vertical dock so the width of the dock flickers.
On the other hand, it should be up to the user to decide how much of the identifiers s/he could see. So I want to allow the user to change the width of the dock such that the width of the QLabel
adapts to that.
Solution attempts
To achieve this I set the horizontal size policy to QSizePolicy::Preferred
and derived my own label class from QLabel
in which I've overridden sizeHint()
to return a fixed size. But that didn't change the behavior.
I know I could apply QFontMetrics
to compute the width of the text and then cut it off to fit into the QLabel
width. But that seems not to be the right solution, particularly as I would like to have the last letter itself clipped if it does not fit in entirely to give the user the clue that the identifier is too long to be displayed.
Versions
- Qt 5.5.1
- GCC 5.4.0
- All from current Ubuntu 16.04 repository
QLabel::setScaledContents(true)
? Does it have an effect on the text in the label? – PlantainQLabel
and it looks promising. Maybe you add this suggestion as an answer. – Muttra