2. Fenster öffnen

Alles zum Qt Framework für Java
Antworten
MKay
Beiträge: 5
Registriert: 6. Oktober 2008 20:30

2. Fenster öffnen

Beitrag von MKay » 23. Oktober 2008 16:41

Hi,

ich habe ein Problem ein 2. Fenster zu öffnen.
Ich habe folgende Klasse:

Code: Alles auswählen

public class About extends QWidget {
	public About(QWidget parent) {
		super(parent);
		
		QLabel lbl = new QLabel("sdfsdf");
		
        	QHBoxLayout mainLayout = new QHBoxLayout();
        	mainLayout.addWidget(lbl);
        	setLayout(mainLayout);
 	}
}
In meinem Hauptfenster, was ohne Probleme dargestellt wird, reagiere ich per Signal/Slot auf den Klick auf einen Button.
Dort wird ein neues Object vom Typ About erstellt und anschließend about.show() aufgerufen.
Doch nichts passiert. Die Funktion wird problemlos aufgerufen, doch es erscheint einfach kein neues Fenster.

Weiss jemand woran das liegen kann?

EDIT: Habe die Klasse jetzt einfach von QDialog abgeleitet. So funkioniert es :)
Jetzt habe ich eine andere Frage: Mein Programm läuft im Tray. Wenn ich über das Kontextmenü den AboutDialog aufrufe zeigt er mir das Fenster an. Wenn ich dann rechts oben auf das X klicke um das Fenster zu schließen beendet sich gleich das ganze Programm. Wie kann ich das verhindern?

Gruss
MKay

ArneStocker
Beiträge: 300
Registriert: 3. November 2004 17:15
Wohnort: Berlin

Beitrag von ArneStocker » 27. Oktober 2008 15:08

Jetzt habe ich eine andere Frage: Mein Programm läuft im Tray.
Arbeitest Du auf dem Mac ?
Wie kann ich das verhindern?
Du könntest das Schließen verhindern, wenn Du die Methode closeEvent ableitest und in dieser Methode ein event.ignore() aufrufst. War es das was Du meintest ?

Gruß Arne

MKay
Beiträge: 5
Registriert: 6. Oktober 2008 20:30

Beitrag von MKay » 27. Oktober 2008 15:56

Arbeitest Du auf dem Mac ?
Nope, bin unter Kubuntu 8.04.

In meiner Haupt-Gui, die unter anderem das TrayIcon anzeigt habe ich folgendes:

Code: Alles auswählen

    @Override
    public void closeEvent(QCloseEvent e) {
    	e.ignore();
    	this.hide();
    }
Das funktioniert auch. Statt das Fenster zu schließen, wird es minimiert.

Per Klick in dieser Haupt-Gui wird ein neues Objekt vom Typ About erstellt (s.o.) und angezeigt. Das Problem ist, dass wenn ich das About-Fenster schließe, sich die Main-Gui ebenfalls schließt (trotz des e.ignore()). Es werden quasi alle Fenster geschlossen und mein Tray-Icon verschwindet auch.
Es bleiben nur noch die Threads am leben, die ich "manuell" gestartet habe.

Woran kann das liegen? Ich könnte euch auch den Source zur Verfügung stellen, wenn das hilft :D

Antworten