gpt4 book ai didi

c++ - Qt:父子部件。关闭单个子部件是否意味着关闭其他子部件?

转载 作者:搜寻专家 更新时间:2023-10-31 02:03:16 27 4
gpt4 key购买 nike

我在测试 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 有三个小部件: parent 一个“ parent ”有两个 child “child1”和“child2”。5 秒后,父窗口部件被 QTimer::singleShot 隐藏。之后,如果我关闭,例如child1窗口,child2的第二个窗口也自动关闭,申请结束。

我希望 child1 和 child2 是独立的,关闭其中一个不应该关闭另一个。

最佳答案

通常,Qt 中的 child 独立于另一个,就像您希望的那样。然而,当最后一个主窗口关闭时(参见 QApplication::lastWindowClosed),应用程序将作为一个整体关闭。可能这就是这里发生的事情。不过,我不确定为什么。

您可以尝试为您的窗口手动定义 closeEvents。你的行为仍然很奇怪,因为我记得读过隐藏父窗口也应该在这里隐藏它的 child :(https://www.qtcentre.org/threads/61708-Multiple-windows-hide-parent-when-child-shown-unhide-when-child-closed)。

关于c++ - Qt:父子部件。关闭单个子部件是否意味着关闭其他子部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55741236/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com