Ich habe ein benutzerdefiniertes Widget, das ein Gesamtlayout eines QVBoxLayout hat. Es enthält mehrere Labels, ein QFormLayout, eine Schaltfläche und eine Strecke, um den überschüssigen Platz zu verschlingen. Eine der Bezeichnungen kann ziemlich groß sein, deshalb versuche ich sicherzustellen, dass es keine merkwürdigen Fälle gibt, in denen der Text nicht lesbar ist. Das Widget ist in einer QScrollArea enthalten, um sicherzustellen, dass, wenn der Benutzer das gesamte Fenster verkleinert, alle Aspekte des Widgets weiterhin sichtbar sind.QLabel Text auf Größe verkleinern
Die Größe von QLabel scheint sich zu ändern, aber sobald ein bestimmter Punkt der Enge erreicht ist, schneidet es nur die unteren paar Zeilen des Etiketts ab und weist das Leerzeichen der Strecke am unteren Rand des Widgets zu.
Ich mache das alles in Code ohne den Designer, so ist es durchaus möglich, dass ich gerade etwas vermisse. Die Subkomponenten sind mit dem Gesamt QVBoxLayout in der folgenden Reihenfolge hinzugefügt:
OverallLayout = new QVBoxLayout(this);
Title = new QLabel();
Description = new QLabel();
SubRegion = new QFormLayout();
Button = new QButton();
...
// set text values, wordWrap(true), and Font for labels
OverallLayout->addWidget(Title);
OverallLayout->addWidget(Description);
OverallLayout->addLayout(SubRegion);
OverallLayout->addStrut(MIN_DIST);
OverallLayout->addWidget(Button);
OverallLayout->addStretch(STRETCH_FACTOR);
Testergebnisse: Die Untersuchung der zurückgegebenen Ergebnisse aus der QLabel der sizeHint() Funktion, kehrten die Werte erscheinen nicht als das Widget horizontal geschrumpft wird sich ändern. Der QLabel erweitert sich jedoch, um mehr vertikalen Raum einzunehmen (153 gegenüber dem Hinweis von 103), gerade nicht genug, um den gesamten Text zu berücksichtigen. Wenn das QLabel zum ersten Mal gezeigt wird, hat es weniger Pixel als seine Größe, aber immer noch genug für seinen Höhe-für-Breite-Betrag. Wenn es in der Größe geändert wird, hat es 30 weniger als seinen heightForWidth-Betrag aber mehr als seine sizeHint.
Ich habe überprüft und das große QLabel hat seine Werte haseheightForWidth() und wordWrap() auf True gesetzt. Was mache ich falsch?
Können Sie das Code-Snippet hinzufügen, in dem diese Widgets zum Layout hinzugefügt werden? Ich denke, dass Sie die Mindestgröße von QLabel durch setMinimumHeight() festlegen sollten, so dass es kein Cut-off gibt. Alternativ können Sie einen maximalen Höhenwert für das Abstandselement festlegen. –
Eine Möglichkeit, das Problem zu beheben, ist das Verknüpfen mit der resized-Methode und das Festlegen der Mindesthöhe auf den Wert heightForWidth (width) für das Description-Label. Das scheint ein bisschen klüger zu sein, also habe ich mich gefragt, was der richtige Weg wäre, um den Layout-Manager dazu zu bringen, seinen Job zu machen. – ElCraneo
Aber was ist mit dem Vorschlag, 'setMinimumHeight()' zu verwenden? – jdi