Hallo Leute,
ich möchte über einen Menüpunkt ein neues Dialogfenster öffnen, in dem ich ein paar Einstellungen vornehmen kann.
Kann mir jemand das grundsätzliche vorgehen kurz aufzeigen?
Ich habe es bisher so gemacht:
1) Neue Klasse erzeugt (Header und Implementierung)
+ Klasse "AddViewDialog" von QWidget abgeleitet
+ Konstruktor erstellt, einen QPushButton hinzugefügt
+ Destruktor implementiert
2) Header der Klasse in die Datei eingebunden, die ein Objekt von der neuen Klasse erzeugt
3) mit AddViewDialog *addViewDialog = new AddViewDialog(this) neues Objekt und einen Zeiger darauf erstellt
4) show() und activateWindows() über den Zeiger aufgerufen
Fertig.
Leider sehe ich nicht viel. Das Fenster wurde scheinbar erzeugt, da die restliche Anwendung den Fokus verloren hat und die Menüs nicht mehr erreichbar sind (wahrscheinlich liegt das neue Fenster direkt darüber, aber es ist nicht sichtbar).
Was habe ich wichtiges vergessen?? Habe ich die neue Klasse von der falschen Klasse abgeleitet??
mfg
Christian
[gelöst] Neues Dialogfenster erzeugen
[gelöst] Neues Dialogfenster erzeugen
Zuletzt geändert von bw1faeh0 am 16. Oktober 2007 14:07, insgesamt 1-mal geändert.
Also so spontan fällt mir nur auf, dass ein Dialogfenster normalerweise über exec() modal aufgerufen wird. Möchtest Du einen nicht-modales Dialog Fenster sollte das über show() funktionieren. Der Aufruf von activateWindow() dürfte nicht nötig sein. Hab ich zu mindest noch nie verwendet. Durch das dem Dialog Konstruktor übergebene Widget ist eigentlich schon festgelegt, dass es "über" dem Parent zu sehen sein soll. Vorausgesetzt natürlich, Du hast Dein AddViewDialog korrekt implementiert.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
Zur Besseren Übersicht habe ich mal noch drei Dateien angehangen
AddViewDialog.h definiert die Klasse des neuen Fensters.
AddViewDialog.cpp implementiert die Klasse des neuen Fensters.
fmbMonitor.cpp erzeugt ein Objekt und soll dieses auch anzeigen.
um langes Suchen in dieser Datei zu vermeiden hier der entsprechende Code:
Vielleicht hilft das ja weiter.
AddViewDialog.h definiert die Klasse des neuen Fensters.
AddViewDialog.cpp implementiert die Klasse des neuen Fensters.
fmbMonitor.cpp erzeugt ein Objekt und soll dieses auch anzeigen.
um langes Suchen in dieser Datei zu vermeiden hier der entsprechende Code:
Code: Alles auswählen
void fmbMonitor::addView()
{
addViewDialog = new AddViewDialog(this);
addViewDialog->show();
addViewDialog->activateWindow();
}
- Dateianhänge
-
- fmbmonitor.cpp
- (8.25 KiB) 133-mal heruntergeladen
-
- AddViewDialog.h
- (1.78 KiB) 125-mal heruntergeladen
-
- AddViewDialog.cpp
- (1.95 KiB) 138-mal heruntergeladen
Dumme Frage: Warum lässt Du deinen AddViewDialog von QWidget erben und nicht von QDialog?
Bei ersterem müsstest Du entsprechende Flags damit es als eigenständiges Widget angezeigt wird selbst setzen.
exec() funktioniert natürlich auch nur wenn es von QDialog erbt.
Sorry hatte das im ersten Posting nicht gelesen, da hattest Du bereits erwähnt, das Du von QWidget ableitest.
Bei ersterem müsstest Du entsprechende Flags damit es als eigenständiges Widget angezeigt wird selbst setzen.
exec() funktioniert natürlich auch nur wenn es von QDialog erbt.
Sorry hatte das im ersten Posting nicht gelesen, da hattest Du bereits erwähnt, das Du von QWidget ableitest.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel