Hallo zusammen,
gleich zu meinem problemchen...
ich möchte gerne beim starten meines programms eine "Suchmaske" öffnen...
in dieser "Suchmaske" soll ich auch die möglichkeit haben auf ein anderes "Fenster" zu wechseln und es soll die aktuelle "Suchmaske" schließen.
Ich habe in meiner main.cpp jetzt mal die "Suchmaske" mit .show() aufgerufen.
Muss ich dann mein anderes Fenster ebenfalls in der main.cpp aufrufen?
ich hätte das jetzt mit setVisible()/isVisible() versucht zu lösen, aber das funktioniert leider nicht so wie ich das möchte...
vielleicht könnt ihr mir weiterhelfen bzw. einen tipp geben wie ihr das löst...
besten dank im voraus...
PS: sowohl die "Suchmaske" ist ein QMainWindow als auch das "Fenster" ist ein QMainWindow
lg
Mehere Fenster in einer Anwendung [gelöst]
-
reinki0013
- Beiträge: 174
- Registriert: 11. November 2008 09:37
- Wohnort: AUT
Mehere Fenster in einer Anwendung [gelöst]
Zuletzt geändert von reinki0013 am 21. Dezember 2010 12:05, insgesamt 1-mal geändert.
Die Logik hinter "Suchmaske" und "anderes Fenster wechseln und Suchmaske schließen" versteh ich nicht so ganz.
Wenn die Suchmaske einfach nur die Möglichkeit des Suchens in deinen Daten sein soll: Verwende GENAU EIN Mainwindow. Zum Suchen setzt du einfach deine Suchmaske als centralWidget. Statt "Fenster wechseln" setzt du einfach wieder ein anderes centralWidget.
Mein Problem ist das "Suchmaske schließen" - das passt einfach nicht zu einem permanenten Top-Level-Widget...
Wenn das Hauptfenster mit einer statischen Ansicht immer gleich sein soll und die Suchmaske nur ein "temporäres" Objekt, kannst du die Suchmaske auch als Dialog aufpoppen lassen.
Wenn die Suchmaske dann doch gleichzeitig zum MainWindow sichtbar sein soll, pack die Suchmaske in ein DockWidget.
Wenn die Suchmaske einfach nur die Möglichkeit des Suchens in deinen Daten sein soll: Verwende GENAU EIN Mainwindow. Zum Suchen setzt du einfach deine Suchmaske als centralWidget. Statt "Fenster wechseln" setzt du einfach wieder ein anderes centralWidget.
Mein Problem ist das "Suchmaske schließen" - das passt einfach nicht zu einem permanenten Top-Level-Widget...
Wenn das Hauptfenster mit einer statischen Ansicht immer gleich sein soll und die Suchmaske nur ein "temporäres" Objekt, kannst du die Suchmaske auch als Dialog aufpoppen lassen.
Wenn die Suchmaske dann doch gleichzeitig zum MainWindow sichtbar sein soll, pack die Suchmaske in ein DockWidget.
-
reinki0013
- Beiträge: 174
- Registriert: 11. November 2008 09:37
- Wohnort: AUT
danke für deine antwort...
ich glaub ich hab mich nicht 100% ausdrücken können
Mein Programm soll im Prinzip 2 "QMainWindow" haben...
Am Beginn soll ein Fenster (könnte auch ein QWidget sein) erscheinen, bei dem ich suchen kann.
Wenn ich nicht suchen will, dann sollte ich über einen "Button/Menüleiste" zu einem bestimmten QMainWindow kommen.
Wenn ich suchen will, soll wiederrum ein anderes QMainWindow kommen (die beiden QMainWindow haben nichts miteinander zu tun)...
jetzt ist es natürlich so, wenn ich das "Suchfenster" als QWidget implementiere und im main.cpp aufrufe, dass ich dort ja auch meine QMainWindow`s aufrufe, das heißt es erscheinen automatisch alle 3 Fenster (im Hintergrund).
Ich möchte aber nur, dass die beiden QMainWindow`s erscheinen wenn ich entweder auf "Suchen" gehe oder über den "Button/Menüleiste" zum anderen QMainWindow wechsle...
hoffe mein problem is jetzt halbwegs ersichtlich
lg
ich glaub ich hab mich nicht 100% ausdrücken können
Mein Programm soll im Prinzip 2 "QMainWindow" haben...
Am Beginn soll ein Fenster (könnte auch ein QWidget sein) erscheinen, bei dem ich suchen kann.
Wenn ich nicht suchen will, dann sollte ich über einen "Button/Menüleiste" zu einem bestimmten QMainWindow kommen.
Wenn ich suchen will, soll wiederrum ein anderes QMainWindow kommen (die beiden QMainWindow haben nichts miteinander zu tun)...
jetzt ist es natürlich so, wenn ich das "Suchfenster" als QWidget implementiere und im main.cpp aufrufe, dass ich dort ja auch meine QMainWindow`s aufrufe, das heißt es erscheinen automatisch alle 3 Fenster (im Hintergrund).
Ich möchte aber nur, dass die beiden QMainWindow`s erscheinen wenn ich entweder auf "Suchen" gehe oder über den "Button/Menüleiste" zum anderen QMainWindow wechsle...
hoffe mein problem is jetzt halbwegs ersichtlich
lg
Also soll sich die "Suchmaske" doch nicht schließen? Das Ding ist quasi dein Hauptfenster?
Dann lass doch das Hauptfenster die anderen Fenster kontrollieren:
In HauptFenster speicherst du dir die Zeiger auf die mw[1,2,3], dann kannst du auf Aktionen dort jeder zeit die Fenster anzeigen/schließen/...
Dann lass doch das Hauptfenster die anderen Fenster kontrollieren:
Code: Alles auswählen
class MainWindow1;
class MainWindow2;
class MainWindow3;
class Hauptfenster {
public:
Hauptfenster(MainWindow1* mw1, MainWindow2* mw2, MainWindow3* mw3);
};-
reinki0013
- Beiträge: 174
- Registriert: 11. November 2008 09:37
- Wohnort: AUT
-
reinki0013
- Beiträge: 174
- Registriert: 11. November 2008 09:37
- Wohnort: AUT
Ist doch dann auch egal, die Lösung schaut so aus wie oben skizziert. Du hast in main deine Objekte, du übergibst den einzelnen MainWindows Zeiger auf andere MainWindows. Dann musst du nur noch einzelne SIGNAL/SLOT-Verknüpfungen erstellen (Button->clicked() -> mw1->show() && this->hide() etc...). Ich persönlich finde das aber nicht sehr Userfreundlich, und würde immer noch eine Lösung mit einem MainWindow + DockWIdgets/Tabs/MDI/... präferieren - leider kenne ich deine Anwendung nicht.
Du kannst in der main selber deine Logik nicht unterbringen, da die main (wie alle anderen Funktionen auch) von oben nach unten abgearbeitet wird und dann nur in "QApplication::exec();" stecken bleibt; dort werden Events verarbeitet.
Du kannst in der main selber deine Logik nicht unterbringen, da die main (wie alle anderen Funktionen auch) von oben nach unten abgearbeitet wird und dann nur in "QApplication::exec();" stecken bleibt; dort werden Events verarbeitet.