setQuitOnLastWindowClosed (true): Является ли widget.hide () == widget.close ()?

При запуске следующий код:

int main(int argc, char **argv) {
QApplication application{argc, argv};
application.setQuitOnLastWindowClosed(true);

QLabel a("a");
a.setMinimumWidth(400);
a.show();

QLabel b("b");
b.setMinimumWidth(400);
b.show();

QTimer::singleShot(10000, [&]() { b.hide(); });

return application.exec();
}

Происходит следующее:

  • Qt открывает окно «а» и окно «б»
  • Через 10 секунд Qt скрывает окно «b» через 10 секунд.

Когда я теперь закрываю окно «a» вручную, цикл события Qt завершается, даже если есть еще закрытое окно «b» (которое скрыто).

Зачем? Не должен ли Qt подождать, пока «b» не будет закрыт, а не только скрыт?

0

Решение

Редактировать:
Из документов на lastWindowClosed событие:

Этот сигнал испускается из QApplication :: exec (), когда закрывается последнее видимое главное окно (т.е. окно без родительского элемента) с набором атрибутов Qt :: WA_QuitOnClose.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector