Seite 1 von 1

Layoutproblem mit QLabel und Wordwrap (Höhe nicht dynamisch)

Verfasst: 30. Juli 2007 10:45
von OregonGhost
Moin,
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);
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

Verfasst: 6. August 2007 10:50
von OregonGhost
Ach kommt, ist echt noch keiner auf das Problem gestoßen? 8)

Verfasst: 6. August 2007 11:30
von Christian81

Verfasst: 6. August 2007 16:22
von OregonGhost
Bedauerlicherweise steht im Bugtracker, dass das Problem in 4.1.0 gelöst wurde. Bei dem mit dem QPage-Dings steht, dass es in einem QWidget nicht auftritt, der Fehler tritt jedoch überall auf.

Ich habe das Problem jetzt händisch gelöst. Das Label wird von mir von Hand gezeichnet und die Höhe passt sich automatisch an. Kann ich auch mit leben, auch wenn das ja eigentlich so funktionieren sollte ;)

Verfasst: 6. August 2007 16:24
von Christian81
Im Grunde kannst du einfach ein minimales Testcase erstellen (ggf. nochmal hier poosten) und dann an qt-bugs@trolltech.com schicken damit es gefixt wird falls es ja ein Bug ist. Ggf. mit Hinweis auf die ähnlichen Fälle im Bugtracker.