Programm Strukturierung
Programm Strukturierung
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
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
Wozu gibt es eigentlich eine Dokumentation? Liest man die auch, oder legt man die nur auf der Festplatte ab?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.
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.
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
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();
}
Mfg
Gesegnet sein all die, die nichts zu sagen haben
und trotzdem den Mund halten.
und trotzdem den Mund halten.
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.
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