Hallo,
also ich brauch mal euren Rat zu folgendem Gedanke:
Es gibt ein Programm, dass 3 verschiedene GUI's beinhaltet, dass je nach Programmeinstellung unterschiedliche Funktionen, Aufgaben / GUI hat.
Die Grundsachen sollen aber in jeder GUI gleich sein. Also zB. es befindet sich in jeder der GUI unten ein Textfeld, in dem "Infos" dem User engezeigt werden. Würde zB. in jeder der 3 GUI's Sinn machen. Auch damit es einheitlich ist.
Wie geht man das am Besten an?
Einfache Möglichkeit wäre ja:
Man erstellt mit dem Designer so eine Art Grundgerüst UI Datei, in der sich alle Gemeinsamkeiten befinden. Die dann abspeichern und dreimal bearbeiten, und jeweils als passende UI abspeichern und auch im Programm verwenden.
Was ist, wenn man nach 2 Wochen merkt, man muss am "Grundgerüst" ein paar Sachen erweitern, verändern. Dann müsste man das in jeder der 3 UI Dateien machen.
Gibt es da die Möglichkeit, diese Grundgerüst UI in die eigentlichen UI's zu vereinen, so dass bei einer Änderung am Grundgerüst dass auch direkt in jeder der GUI's gleich ist??
Ich hoffe, ihr wisst, worauf ich hinaus will
Wie geht man das am Besten an ???
Grundgerüst UI in eigentliche UI integrieren??
-
PeterLustig
- Beiträge: 386
- Registriert: 21. November 2007 20:07
Du könntest es unterteilen in Hauptabschnitt und die einzelnen Abschnitte. Dann machst du ein Widget UI das deinen Hauptabschnitt darstellt. Bei den anderen UIs fügst du dann ein QWidget hinzu und promotest es zu deinem Hauptabschnitt. Das würde natürlich auch anders herrum funktionen (würde sogar mehr Sinn machen).
Wär eine Möglichkeit.. Ansonsten kannst du ja dynamisch im Code auch deine "dynamischen" GUIs erstellen kann. Ich weiß nicht wie das Programm genau aussieht und was daher die beste Möglichkeit wäre..
Wär eine Möglichkeit.. Ansonsten kannst du ja dynamisch im Code auch deine "dynamischen" GUIs erstellen kann. Ich weiß nicht wie das Programm genau aussieht und was daher die beste Möglichkeit wäre..
Hallo, wenn man das ohne Designer machen würde, kann man das alles nicht einfach Vererben?
QWidget
-- userInterface : public QWidget
---- angepasst1 : public userInterface
---- angepasst2 : public userInterface
---- angepasst3 : public userInterface
Wenn ich da änderungen am userInterface machen würde, hätten die Kind Widgets die sachen auch...
QWidget
-- userInterface : public QWidget
---- angepasst1 : public userInterface
---- angepasst2 : public userInterface
---- angepasst3 : public userInterface
Wenn ich da änderungen am userInterface machen würde, hätten die Kind Widgets die sachen auch...
Vielen Dank für eure Antworten
Also das mit dem "dynamischen Code" habe ich mir auch noch im nachhinein gedacht.
@PeterLustig: Das Programm ist ein SW-Projekt (Thema RFID) bei uns an der Fachhochschule. Sind 5 beteiligte Studenten an diesem Projekt. Ganz grob gesagt gibt es einen Server und mehrere Clients die unterschiedliche Funktionen haben (der eine hat direkte Verbindung zu einem RFID Reader, der andere dient als ne Workstation für "Mitarbeiter"). Aber alle müssen den Server via TCP Anfragen an eine Datenbank machen, bzw. füllen. Diese Logik zum Verwalten ist unabhängig von der GUI und schon soweit am Laufen (in nem seperaten WorkerThread). Ich selber habe nun neben dem Kern mir als Aufgabe gemacht, Gedanken über die GUI zu machen. Diese wird je nach Art des Programmes vom Kern bereitgestellt, sag ich mal so.
Also klassenmäßig denke ich mir das auch so, wie jd das so gemeint hat:
HauptGUIKlasse : QWidget
dort im Konstruktor die bereitgestellte setupUI(..) für's "Grundgerüst" verwenden
UnterGUIKlassen : HauptGUIKlasse
dort im jeweiligen Konstruktor die jeweilig bereitgestellte setupUI(..) für die jeweiligen ...ui.h Dateien.
Kann man das so angehen? Oder geht's auch anders / besser
Also das mit dem "dynamischen Code" habe ich mir auch noch im nachhinein gedacht.
@PeterLustig: Das Programm ist ein SW-Projekt (Thema RFID) bei uns an der Fachhochschule. Sind 5 beteiligte Studenten an diesem Projekt. Ganz grob gesagt gibt es einen Server und mehrere Clients die unterschiedliche Funktionen haben (der eine hat direkte Verbindung zu einem RFID Reader, der andere dient als ne Workstation für "Mitarbeiter"). Aber alle müssen den Server via TCP Anfragen an eine Datenbank machen, bzw. füllen. Diese Logik zum Verwalten ist unabhängig von der GUI und schon soweit am Laufen (in nem seperaten WorkerThread). Ich selber habe nun neben dem Kern mir als Aufgabe gemacht, Gedanken über die GUI zu machen. Diese wird je nach Art des Programmes vom Kern bereitgestellt, sag ich mal so.
Also klassenmäßig denke ich mir das auch so, wie jd das so gemeint hat:
HauptGUIKlasse : QWidget
dort im Konstruktor die bereitgestellte setupUI(..) für's "Grundgerüst" verwenden
UnterGUIKlassen : HauptGUIKlasse
dort im jeweiligen Konstruktor die jeweilig bereitgestellte setupUI(..) für die jeweiligen ...ui.h Dateien.
Kann man das so angehen? Oder geht's auch anders / besser
Ja das geht, du kannst ja die Ui direkt implementieren, die du mit dem Designer gemacht hast.
Im Konstruktor machst du dann dein setupUi(this). Das wars dann auch schon, somit hast du eine schöne Widget Hierarchie.
Code: Alles auswählen
class CHauptWindow : public QWidget, private Ui::HauptWindow {
};
class CUnterWindow1 : public CHauptWindow, private Ui::UnterWindow1 {
};