Home / LinuxUser / 2002 / 02 / GUI-Programmierung mit Qt Designer

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Programmfenster auf Mausklick

GUI-Programmierung mit Qt Designer

Eigenschaften und mehr

Zwei neue Fenster sind hinzugekommen: ein Formular, auf dem GUI-Elemente aus den Werkzeugleisten platziert werden, und der Action Editor. Je nachdem, welches Widget auf dem Formular markiert ist, ändert sich der Inhalt des Properties-Reiters.

Properties sind Eigenschaften einer Klasse, die sich mit set-Funktionen ändern lassen. Die Funktionstaste [F1] liefert eine Kurzbeschreibung. Ein Klick auf die Hyperlinks ruft das externe Hilfsprogramm assistant mit dem entsprechenden Ausschnitt der API-Dokumentation auf. Beim "Container-Fenster", per Default als Form x bezeichnet, wird die Property name zum Klassennamen der gesamten Klasse; sonst legt man damit den Variablennamen des jeweiligen Objekts fest.

Betätigt man über einem markierten Formularbestandteil die [F1]-Taste, erscheint ebenfalls der Qt Assistant mit der passenden API-Dokumentation. Dessen Start kann auf etwas leistungsschwächeren Rechner einige Zeit dauern. Leider geschieht einfach nur nichts, wenn der Designer das assistant-Programm mangels passend gesetzter Pfadangabe o.a. nicht aufrufen kann.

Möchte ein Qt-GUI-Objekt signalisieren, dass jetzt etwas passieren soll, sendet es ein Signal aus. So setzt ein Pushbutton-Objekt das Signal clicked() in die Welt, sobald der Nutzer auf dieses GUI-Element klickt. Nun muss sich nur noch ein entsprechendes Objekt finden, das dieses Signal bearbeiten will, sonst verhallt es unerhört. Eine Klasse, deren Objekte auf bestimmte Signale reagieren sollen, enthält daher Funktionen (Slots), die mit den entsprechenden Signalen verbunden ("connected") werden. Wie das genau aussieht, ist in [4] oder auch im Qt-Tutorial [5] genauer erklärt.

Mit dem Connection-Werkzeug, in der Werkzeugleiste über das Icon mit dem rot-blauen Balken aufzurufen, lassen sich zwei Widgets auf dem Formular "verbinden". Der aufploppende Dialog (Abbildung 5) gibt die Möglichkeit, ein Signal des zuerst markierten Objekts mit einem Slot zu verknüpfen. Das etwas irreführend mit Slots bezeichnete Dropdown-Menü ermöglicht die Auswahl des Zielobjekts. Dessen Slots können nun markiert werden.

Abbildung 5: Signale und Slots per Auswahldialog verbinden

Unter Edit / Slots erhält man die Möglichkeit, Slots für die auf dem Formular entstehende GUI-Klasse zu definieren. Wer in C++ sicher ist, kann diese neuen Funktionen gleich mit dem beispielsweise über das Kontextmenü des Formulars unter Source... zu erreichenden Code-Editor implementieren. Leider lässt sich der nicht aus dem Hauptfenster lösen, sodass die Arbeit mit ihm etwas beschwerlich ist. Fügt man hier eine neue Funktion von Hand ein, wird diese als neuer Slot auch in den Source-Reiter eingetragen (Abbildung 6). Dort trägt man über das Kontextmenü übrigens auch Header-Dateien nach, die für die Implementation gebraucht werden. Während die GUI-Beschreibung der neuen Klasse beim Speichern (etwa mit File / Save All) in einer XML-Datei mit der Endung .ui landet, wird die Implementation in einem entsprechenden .ui.h-File abgelegt.

Abbildung 6: Der neu eingefügte makeIndex()-Funktionskopf erscheint sofort im Source-Tab

Layout-Management

Wenn schon die grafischen Elemente des neuen GUIs per Mausklick platzierbar sind, sollte sich der Designer auch ohne händische Friemelei um das harmonische Gesamtbild kümmern. Dafür ist die Layout-Management-Toolbar (Abbildung 7) zuständig. Wie bei allen anderen Icons auch erschließt sich deren Bedeutung über die Tool-Tipps, gelbe "Zettelchen", die erscheinen, wenn die Maus ein wenig über dem Icon verweilt. Ins Formular eingefügte Federn sorgen für ausgewogenen Platz zwischen markierten Elementen, wenn man sie mit den entsprechenden Werkzeugen in ein Gitter bzw. ein horizonales oder vertikales "Layoutraster" einpasst. Bei Splitter-Layouts kann der Anwender des fertigen GUIs den Platz, den die betroffenen Widgets einnehmen, nach Gutdünken zwischen ihnen aufteilen.

Das Ergebnis der Bemühungen lässt sich über das Preview-Menü in verschiedenen Outfits von Windows bis Motif betrachten. Einzelelemente innerhalb eines layouteten "Containers" können sich übrigens nur dann in ihrer Größe verändern, wenn das Layout vorher aufgehoben (Break Layout) wurde.

Abbildung 7: Eistellung der Optimalgröße von Widgets u.a. Layout-Möglichkeiten

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 80 Punkte (4 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...