QDialog als Tool Window im Vordergrund

Alles rund um die Programmierung mit Qt
Antworten
stvokr
Beiträge: 2
Registriert: 25. April 2013 17:02

QDialog als Tool Window im Vordergrund

Beitrag von stvokr »

Moin allerseits,

ich habe ein Problem mit beim Umstieg von Qt 4 nach Qt 5 (Windows XP, VS 2010). Der Umstieg selbst machte wenig Probleme, kleinere Änderungen, aber das ging.
Nun ist das Verhalten meiner Dialoge allerdings anders als bei Qt 4. Die Dialoge habe ich als Tool Dialoge implementiert.

Konstruktor eines QDialogs:

Code: Alles auswählen

AboutDialog::AboutDialog( QWidget* parent )
    : QDialog( parent, Qt::Tool )
{
    ui.setupUi( this );
}
Aufruf aus der MainWindow Klasse:

Code: Alles auswählen

AboutDialog aboutDialog( this );
aboutDialog.retranslate();
aboutDialog.exec();
Die Variable aboutDialog ist kein Member, sie wird angelegt und nach dem Schließen des Dialogs wieder gelöscht. Daher habe ich auch exec() überschrieben und mit eigenem Krams gefüllt. Am Ende meiner exec() Funktion rufe ich QDialog::activateWindow() auf, damit der Dialog im Vordergrund ist.

Code: Alles auswählen

int AboutDialog::exec()
{
    // Mein Krams hier

    QDialog::activateWindow();

    return QDialog::exec();
}
Normale Dialoge brauchen das nicht, aber Tool Dialoge irgendwie schon, zumindest habe ich keinen anderen Weg gefunden. Der Dialog ist ApplicationModal.
Bei Qt 4 funktioniert das auch, aber bei Qt 5 geht das nicht mehr. Ich habe auch schon raise() und setFocus() probiert, aber das verdammte Ding will von sich aus nicht in den Vordergrund.

Kann mir jemand helfen?

Viele Grüße
Oliver
Antworten