Layoutproblem mit QLabel und Wordwrap (Höhe nicht dynamisch)
Verfasst: 30. Juli 2007 10:45
Moin,
ich habe mein Problem etwas reduzieren können und es stellt sich wie folgt dar:
Einfacher QDialog und darauf:
Ich füge also ein Label mit einem etwas längeren Text ein, mit aktiviertem Wordwrap und MinimumExpanding für die Höhe. Ich würde also erwarten, dass das Label jederzeit die minimal nötige Höhe für die gegebene Breite einnimmt. Aber das ist nicht der Fall. Es nimmt in diesem Beispiel eine Höhe von etwa drei Textzeilen ein, egal ob der Text nun tatsächlich über drei Zeilen läuft, oder über zwei oder eine (oder vier, es wird also auch abgeschnitten). Kurz, das Layout ist nicht wirklich dynamisch und das hat in der Situation, in der ich es tatsächlich verwende, zur Folge, dass ich einen ganz großen Abstand nach oben und nach unten habe.
Wenn Wordwrap deaktiviert ist, funktioniert es korrekt, nur dass die Zeilen halt zu lang werden. Wenn Wordwrap aktiv ist, aber ich die Sizepolicy vertikal auf Preferred stelle, funktioniert es grundsätzlich ganz gut, wenn das Layout automatisch läuft... Wenn das Label dann aber verkleinert wird, wird es irgendwann zu klein, also die unteren Zeilen werden abgeschnitten.
Mache ich irgendetwas falsch oder ist das eine Einschränkung von Qt? Wie kann ich das umgehen? Muss ich das Label selbst zeichnen (wäre kein allzu großer Aufwand, weil das Label tatsächlich ohnehin eine Ableitung von QLabel ist, aber der Fehler tritt auch mit einem reinen QLabel auf)?
---
OregonGhost
ich habe mein Problem etwas reduzieren können und es stellt sich wie folgt dar:
Einfacher QDialog und darauf:
Code: Alles auswählen
QLayout* layout = new QVBoxLayout(this);
QLabel* label = new QLabel(this);
label->setText("some text just long enough to get some word-wrap to work. Plain english text without any sense. Really.");
label->setWordWrap(true);
label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::MinimumExpanding);
layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(label);Wenn Wordwrap deaktiviert ist, funktioniert es korrekt, nur dass die Zeilen halt zu lang werden. Wenn Wordwrap aktiv ist, aber ich die Sizepolicy vertikal auf Preferred stelle, funktioniert es grundsätzlich ganz gut, wenn das Layout automatisch läuft... Wenn das Label dann aber verkleinert wird, wird es irgendwann zu klein, also die unteren Zeilen werden abgeschnitten.
Mache ich irgendetwas falsch oder ist das eine Einschränkung von Qt? Wie kann ich das umgehen? Muss ich das Label selbst zeichnen (wäre kein allzu großer Aufwand, weil das Label tatsächlich ohnehin eine Ableitung von QLabel ist, aber der Fehler tritt auch mit einem reinen QLabel auf)?
---
OregonGhost