2010-12-09 7 views
0

Ok, hier ist mein Problem:qt nicht erweiterbares Layout?

Ich habe ein vertikales Layout, das ein QPlainTextEdit und ein horizontales Layout (mit 2 QPushButtons) unterhalb der Textbearbeitung enthält.

Das vertikale Layout ist nur ein Teil der GUI und wird abhängig von der Bildschirmauflösung skaliert. Übrigens. Es ist eine mobile App, daher habe ich nicht viel Platz auf dem Bildschirm.

Push-Buttons haben etwas Text, der dynamisch gesetzt wird, ich weiß es nicht von Anfang an, es manuell zu codieren.

Mein Problem tritt auf, wenn der Text in den Drucktasten groß ist, und mein ganzes vertikales Layout wird erweitert, um die Knöpfe zu passen.

Wie kann ich das vertikale Layout unerreichbar machen? Beachten Sie, dass sich dies aufgrund der unterschiedlichen Bildschirmauflösung von "fixed" unterscheidet. Ich würde einfach gerne die Buttons klemmen, wenn sie nicht passen, aber die Layoutbreite unberührt lassen.

Wie auch immer, dies zu tun?

Antwort

2

Sie müssen die maximale Breite für die Schaltflächen festlegen, nicht das Layout, das nur erweitert wird, um den breiteren Schaltflächen zu entsprechen. Sehen Sie sich the docs on QPushButton an und suchen Sie nach den vererbten QWidget-Funktionen namens setMaximumSize oder setMaximumWidth.

+0

ja, aber maximale Größe immer noch feste Größe erwarten. nur wenn ich jedes Repaint überprüfe und die Größe auf layout.width/2 setze – ZolaKt

+1

Warum änderst du die maximale Breite der Schaltfläche nicht direkt nachdem der Text geändert wurde? Es ist nicht nötig, jedes Repaint zu machen, nur wenn der Text geändert wird (Sie können dafür keine Verbindung zu einem 'Signal' herstellen und das nicht-virtuelle' QPushButton :: setText() 'nicht re-implementieren, so dass Sie es haben um es manuell zu machen ...) – rubenvb

0

Sie können GetWidth() immer auf die Schaltfläche anwenden, wenn sie eine geeignete Größe hat, und dannMaximumWidth mit diesem Wert festlegen, da Sie dies normalerweise nicht wissen würden. Wählen Sie eine geeignete Standard-Textgröße/-Val und verwenden Sie diese, um Ihren "dynamischen" Standard zu erstellen, da dies auf Bildschirmen unterschiedlicher Größe erfolgt.

Verwandte Themen