Seite 1 von 1

Dialog / Qt::WindowStaysOnTopHint

Verfasst: 16. Februar 2018 00:11
von carre
Hi,

in einem Dialog Window habe ich eine Checkbox (checked = true) wenn ich die Checkbox abwähle - wird der Dialog geschlossen.

Code: Alles auswählen

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    this->setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
}
Dialog::~Dialog()
{
    delete ui;
}
void Dialog::on_checkBox_clicked(bool checked)
{
    if (checked) {
      this->setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
    } else {
      this->setWindowFlags(windowFlags() & ~Qt::WindowStaysOnTopHint);
    }
}
Hat jemand eine Idee warum der Dialog geschlossen wird? (keine Verbindung clicked -> accept() usw., Default Dialog Window)

Danke und Gruß
Thomas

// Qt 5.9.1 , Win10

Re: Dialog / Qt::WindowStaysOnTopHint

Verfasst: 16. Februar 2018 06:25
von Christian81
Ein minimales, kompilierbares Beispiel wäre nicht schlecht.

Re: Dialog / Qt::WindowStaysOnTopHint

Verfasst: 18. Februar 2018 11:58
von carre
Hi,

anbei ein kleines Beispiel.

Danke und Gruß
Thomas
test_win_flag.zip
(3.53 KiB) 353-mal heruntergeladen

Re: Dialog / Qt::WindowStaysOnTopHint

Verfasst: 18. Februar 2018 14:06
von Christian81
Hallo,

ich kann das Problem reproduzieren, sehe auch, dass bei einem Reparenting (was hier der Fall ist) das Fenster mittels hide() geschlossen wird, sehe aber nicht wo es wieder geöffnet werden sollte (unter dem neuen Parent). Ich glaube das ist nötig um ein Fenster von Desktop 1 auf Desktop 2 verschieben zu können. So auf die Schnelle habe ich keine Idee außer einem 'show()' nach dem Setzen der Window-Flags.
Zur richtigen Lösung müsstest Du einen Bugreport bei Qt anlegen -> https://bugreports.qt.io/secure/Dashboard.jspa

Re: Dialog / Qt::WindowStaysOnTopHint

Verfasst: 18. Februar 2018 15:24
von carre
Ok - Vielen Dank!

Gruß Thomas