Seite 1 von 1
Programm Strukturierung
Verfasst: 16. Januar 2007 17:23
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
Verfasst: 18. Januar 2007 17:01
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
Verfasst: 18. Januar 2007 17:53
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?
Verfasst: 18. Januar 2007 18:23
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?
Verfasst: 19. Januar 2007 13:20
von ZzLeCzZ
"It also handles the application's initialization and finalization"
koenntest du mir das mal auf meine frage hin interpretieren?
Verfasst: 19. Januar 2007 21:28
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
Verfasst: 22. Januar 2007 12:17
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.
Verfasst: 22. Januar 2007 13:23
von Flachkoepper
zu qApp: Schau mal in Doku, qApp ist global...
Verfasst: 22. Januar 2007 14:52
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.