Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Tankard

Treue Seele

  • »Tankard« ist der Autor dieses Themas

Beiträge: 192

Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft

  • Private Nachricht senden

1

01.10.2014, 16:19

QT Layout, ScrollArea und Größen bestimmter Widgets

Hallo,

ich bin gerade dabei eine GUI mit QT 5.3 zu erstellen, bei der sich die Widgets der Größe des Fensters anpassen sollen. Dabei habe ich derzeit noch ein paar Probleme.

1. Ich habe im oberen Bereich der GUI zwei QLabel, in denen nachher Bilddaten angezeigt werden sollen. Diese nehmen im Designer auch jeweils die Hälfte der Fläche ein (siehe Bild 1). Wenn ich allerdings ein Bild erstelle, welches größer ist als das Lebel, dieses Bild auf die Breite des Labels skaliere und dann anzeige, dann ist es sehr klein (siehe Bild 2). Das Label scheint also im laufenden Programm deutlich kleiner zu sein als im Designer. Wie kann ich die Label entsprechend groß darstellen, wie sie auch im Designer zu sehen sind?

2. Die ScrollAreas im TabWidget haben keine Scrollbars. Auch wenn ich diese permanent einschalte, bleiben diese ausgegraut. Ich bin eigentlich davon ausgegangen, dass mit der Einstellung "ScrollBarAsNeeded" automatisch gescrollt werden kann, wenn der Inhalt nicht mehr ganz angezeigt werden kann. Wenn ich die Option "WidgetResizeable" der ScrollArea auf false setze, dann kann ich scrollen (siehe Bild 3). Allerdings führt dies zu einem weiteren Problem.

3. Wenn ich die Option WidgetResizeable der ScrollArea auf false setzte, kann zwar gescrollt werden, aber alles, was im Designer bereits nicht mehr ins Widget passt, wird abgeschnitten (siehe unterer Button in Bild 3). Wie kann ich es schaffen, dass ich in ein Widget Content anzeige, der eigentlich zu groß für das Widget ist und diesen Content dann durch Scrollbars erreiche?

4. Ist es möglich z.B. durch eine Trennlinie zwischen dem Bildbereich und dem Tabwidget, auch das Größenverhältnis dieser beiden Bereiche anzupassen? Bisher habe ich das so gelöst, dass ich ein VerticalLayout mit "layoutScretch = 3,1" habe, dieses wiederum zwei VerticalLayouts enthält, wovon eines für den oberen Bildbereich und eines für den unteren TabBereich ist, erstellt habe.

Bis jetzt haben sich mir solche Probleme nie gestellt, da ich immer GUIs mit festen Größen hatte. Ich hoffe ihr könnt mir weiter helfen.


Grüße

Tankard
»Tankard« hat folgende Bilder angehängt:
  • gui1.png
  • gui2.png
  • gui3.png

2

02.10.2014, 21:07

Zu 1: Das sollte eigentlich über den SizePolicy Wert einstellbar sein. Den fand ich manchmal etwas unintuitiv, aber die Doku erklärt ganz gut, was genau die verschiedenen Werte machen.
Zu 4: Möglicherweise sind Dock-Widgets das, was du suchst. Ich benutze die recht gerne für Hilfswidgets, der Benutzer kann dann auch selber die GUI ganz gut anpassen.

Mit Scroll Areas habe ich leider nicht so viel Erfahrung.
Lieber dumm fragen, als dumm bleiben!

Powerpaule

Treue Seele

Beiträge: 162

Wohnort: Berlin

Beruf: Softwareentwickler

  • Private Nachricht senden

3

04.10.2014, 21:07

Zu 2. und 3.: Kann es sein, dass dein Scrollarea kein Layout hat?
(Also Rechtsklick auf das Scrollarea und Layout=> irgendwas auswählen, bspw. waagerechte anordnung)
Mit Layout sollte es eigentlich klappen. Ich finde es selber auch etwas komisch dass es nur so geht, aber nun ja.

Tankard

Treue Seele

  • »Tankard« ist der Autor dieses Themas

Beiträge: 192

Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft

  • Private Nachricht senden

4

05.10.2014, 20:15

Zu 1: Das sollte eigentlich über den SizePolicy Wert einstellbar sein. Den fand ich manchmal etwas unintuitiv, aber die Doku erklärt ganz gut, was genau die verschiedenen Werte machen.

Werde mir die Policys morgen nochmal angucken. Damit hatte ich schon etwas herumgespielt, aber die Ergebnisse waren immer anders als erwartet.

Zu 4: Möglicherweise sind Dock-Widgets das, was du suchst. Ich benutze die recht gerne für Hilfswidgets, der Benutzer kann dann auch selber die GUI ganz gut anpassen.

Klingt zwar prinzipiell ganz gut, aber in diesem Fall nicht das was ich Suche.

Zu 2. und 3.: Kann es sein, dass dein Scrollarea kein Layout hat?
(Also Rechtsklick auf das Scrollarea und Layout=> irgendwas auswählen, bspw. waagerechte anordnung)
Mit Layout sollte es eigentlich klappen. Ich finde es selber auch etwas komisch dass es nur so geht, aber nun ja.

Mit Layout und der Einstellung WidgetResizeable = false hat es funktioniert. Allerdings wird es noch ziemlich eklig mit Layout ein gutes Layout hinzubekommen.

Powerpaule

Treue Seele

Beiträge: 162

Wohnort: Berlin

Beruf: Softwareentwickler

  • Private Nachricht senden

5

05.10.2014, 22:48

Wie soll das Layout denn für den Bereich werden?

Tankard

Treue Seele

  • »Tankard« ist der Autor dieses Themas

Beiträge: 192

Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft

  • Private Nachricht senden

6

06.10.2014, 15:21

Je nach Tab unterschiedlich. Da wird es einen Bereich geben, um verschiedene Algorithmen Schritt für Schritt durchzugehen und sich die Zwischenergebnisse im anderen Teil des Tabs anzusehen. Andere Tabs werden für Konfigurationen genutzt. Manche Sachen benötigen halt einfach mehere kleine Widgets/Felder (z.B. ein serieller Port mit Datenbits, Parität, Stopbits, etc.) und andere eher größere (z.B. eine Kamera mit IP, Belichtungszeit, automatischer Weißabgleich, etc.). Mal sehen wie das so wird. Bis jetzt hatte ich das Glück dass die GUIs, die ich selbst machen musste, immer eine feste Größe hatten und ich einfach alles so platzieren konnte wie es am Ende brauchbar aussieht. Ich brauchte auch noch keine Bereiche wo gescrollte wurde. Naja, es wird schon hinhauen.

Powerpaule

Treue Seele

Beiträge: 162

Wohnort: Berlin

Beruf: Softwareentwickler

  • Private Nachricht senden

7

06.10.2014, 19:27

In das Scrollarea kannst du ja "Unter"widgets packen, die dann die eigentlichen Elemente enthalten und dann entsprechend nochmal ein Layout haben. Du musst dann noch drauf achten bei den Layouts die margins und spacings richtig einzustellen. Angenommen, du willst eine Reihe Buttons haben, und darunter irgendein großes Textfeld oder ein Bild, dann packst du in das Scrollarea ein Widget, und das die Buttons kommen und welches horizontales Layout bekommt, und darunter das Textfeld oder so, und das Scrollarea bekommt als Layout dann halt Vertical. Wird zwar dann teilweise recht verschachtelt, funktioniert aber recht gut.
Ansonsten können je nach dem auch Tabellen- oder Formularlayout hilfreich sein, aber haben mir bisher noch fast nie geholfen.

Tankard

Treue Seele

  • »Tankard« ist der Autor dieses Themas

Beiträge: 192

Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft

  • Private Nachricht senden

8

07.10.2014, 17:45

Gridlayout oder Formlayout machen es nicht wirklich besser. Beim Gridlayout sind alle Zellen gleich groß und beim Formlayout werden die Elemente so angeordnet, wie ich es garnicht gebrauchen kann. Es wird auf verschachtelte Layouts hinauslaufen.

Powerpaule

Treue Seele

Beiträge: 162

Wohnort: Berlin

Beruf: Softwareentwickler

  • Private Nachricht senden

9

08.10.2014, 20:41

Beim Tabellenlayout sind die Elemente nicht unbedingt gleichgroß, zumindest sind nicht alle Spalten oder alle Zeilen gleich hoch oder breit. Das hängt auch von den Sizepolicies der Widgets ab. Damit muss man sich leider etwas beschäftigen. Wichtig sind im Übrigen auch die Horizontalen bzw. vertikalen Spacers. Mit den veschachtelten Layouts ist es aber in der Regel am flexibelsten. Wenn es kaum geht, poste am besten mal eine skizze wie es werden soll, vielleicht kann ich dazu noch was nützliches sagen ; )

Werbeanzeige