Programm Strukturierung

Alles rund um die Programmierung mit Qt
Antworten
ZzLeCzZ
Beiträge: 7
Registriert: 6. Dezember 2006 15:35

Programm Strukturierung

Beitrag von ZzLeCzZ »

Hi,

hab eine generelle frage welche Moeglichkeiten es gibt sein Programm am besten zu strukturieren.

Also ich habe eine GUI in form einer mainwidget Klasse und ein Programm Klasse die mit dem GUI kommunizieren kann und seine ein und ausgabe von dem GUI bekommt.

Die Frage ist nun wo kommt die Programm Klasse hin? In eine QApplication klasse , eine QWidget klasse, mit in die mainwidget Klasse oder in die main function. Gibt es da eine goldene Loesung?

Laufen qapp und das mainwidget eigentlich im gleichen thread? oder muss man mit der Kommunikation zwischen qapp und Fenster aufpassen?

vielen Dank
marco
Beiträge: 41
Registriert: 6. Dezember 2006 23:46
Wohnort: Niederrhein

Beitrag von marco »

hallo,

meistens ist es am übersichtlichsten, wenn jede klasse in ein eigenes dateipaar .cpp/.h geschrieben wird. ansonsten kann ich die frage(n) nicht so ganz nachvollziehen.

mit der zeit kommt aber die erfahrung. viele details sind auch geschmackssache.

gruß, marco
ZzLeCzZ
Beiträge: 7
Registriert: 6. Dezember 2006 15:35

Beitrag von ZzLeCzZ »

Wofuer ist zb. die QApplication Klasse? startet man eine Instant und dann gut oder leitet man sie ab und packt da seine gui und seein program rein?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

The QApplication class manages the GUI application's control flow and main settings.
It contains the main event loop, where all events from the window system and other sources are processed and dispatched. It also handles the application's initialization and finalization, and provides session management. It also handles most system-wide and application-wide settings.
Wozu gibt es eigentlich eine Dokumentation? Liest man die auch, oder legt man die nur auf der Festplatte ab?
ZzLeCzZ
Beiträge: 7
Registriert: 6. Dezember 2006 15:35

Beitrag von ZzLeCzZ »

"It also handles the application's initialization and finalization"

koenntest du mir das mal auf meine frage hin interpretieren?
Der Neue
Beiträge: 24
Registriert: 31. Mai 2006 14:45

Beitrag von Der Neue »

Du legst in der main.cpp einfach nur eine Instanz von QApplication an und stellst die dann einfach entsprechend deinen Bedürfnissen ein, abzuleiten brauchst du nicht.
Das kann z.b. so aussehen, wenn du einen Dialog als Hauptfenster hast.

Code: Alles auswählen

#include <QApplication>
#include "EigenerDialog.h"

int main (int argc, char *argv[])
{
    QApplication(argc, argv) app;
    EigenerDialog * dialog = new EigenerDialog();
    dialog->show();
    return app.exec();
}
In EigenerDialog.h würde man von QDialog den eigenen Dialog ableiten und die entsprechenden Methoden einfügen. In EigenerDialog.cpp ganz normal die Methoden implementieren etc. Genaueres steht in der Doku.

Mfg
Gesegnet sein all die, die nichts zu sagen haben
und trotzdem den Mund halten.
ZzLeCzZ
Beiträge: 7
Registriert: 6. Dezember 2006 15:35

Beitrag von ZzLeCzZ »

ok ich moechte nun mein (haupt)programm code komplett von der gui separieren. Gui und programm sollen nur ueber eine schnittstelle miteinander kommunizieren (signal/slot).

Bin nun zum schluss gekommen das ich gui und prog in eine Q_OBJECT Klasse "MainClass" packe und da drin connecte.
Und in der main schleife dann sowas wie setMainWidget(MainClass->Gui); mache.

Im Gegensatz:
Der Vorteil die connections in einer abgeleiteten QApplication Klasse zu machen waere das von jedem Teil des Programmes die variable qApp verfuegbar waere. So koennte man aus einem Thread sicher (Qt 3) ein event an qApp schicken das dieses dann an das Programm oder and die gui weiterleitet.
Flachkoepper
Beiträge: 149
Registriert: 11. Januar 2005 12:14
Wohnort: Hannover

Beitrag von Flachkoepper »

zu qApp: Schau mal in Doku, qApp ist global...
ZzLeCzZ
Beiträge: 7
Registriert: 6. Dezember 2006 15:35

Beitrag von ZzLeCzZ »

Ja das meinte ich das einer abeleiteten QApplication Klasse einfach ueber qApp eine event geschickt werden kann und dann auf das event reagiert werden kann. Sorry etwas unklar geschrieben.
Antworten