【发布时间】:2019-09-08 12:11:51
【问题描述】:
我的测试 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 是独立的,关闭其中一个不应关闭另一个。
【问题讨论】:
标签: c++ qt parent-child