У меня следующая проблема с тестовым приложением Qt, которое содержит один родительский виджет и два дочерних виджета, которые являются отдельными окнами. Если родительский виджет скрыт, то закрытие одного дочернего виджета подразумевает закрытие второго дочернего элемента, а также закрытие всего приложения.
Это нормальное поведение родительских / дочерних виджетов в Qt? Есть ли способ сохранить видимым второй дочерний виджет и запустить приложение?
#include <QApplication>
#include <QtWidgets>
class MyWidget : public QWidget {
public:
MyWidget(const QString& title = "", QWidget *parent = nullptr) :
QWidget(parent) {
setWindowTitle(title);
setWindowFlags(windowFlags() | Qt::Window);
setVisible(true);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWidget parent("Parent");
MyWidget *child1 = new MyWidget("Child1", &parent);
MyWidget *child2 = new MyWidget("Child2", &parent);
QTimer::singleShot(5000, [&](){parent.hide();});
return a.exec();
}
Есть три виджета простого класса MyWidget:
родитель один 'родитель' с двумя дочерними объектами 'child1' и 'child2'.
Через 5 секунд родительский виджет скрывается с помощью QTimer :: singleShot.
После этого, если я закрою, например, окно child1, второе окно child2
также автоматически закрывается и приложение завершается.
Я ожидаю, что child1 и child2 независимы, и закрытие одного из них не должно закрывать другое.