我在测试Qt应用程序中遇到以下问题,该应用程序包含一个父窗口小部件和两个子窗口小部件,它们是单独的窗口。如果父窗口小部件被隐藏,则关闭单个子窗口小部件意味着关闭第二个子窗口以及整个应用程序。
这是Qt中父/子小部件的正常行为吗?有没有办法让第二个子窗口小部件保持可见并运行应用程序?
import requests
import re
from bs4 import BeautifulSoup as bs
r = requests.get('https://www.paperplatemakingmachines.com/',)
soup = bs(r.content, 'lxml')
r = re.compile(r'var pns_no = "(\d+)"')
data = soup.find('script', text=r).text
script = r.findall(data)[0]
print('+91-' + script)
有三个简单类MyWidget的小部件: 父母一个“父母”,两个孩子“ child1”和“ child2”。 5秒后,父控件被QTimer :: singleShot隐藏。 之后,如果我关闭,例如child1窗口,第二个窗口child2 也会自动关闭并完成应用程序。
我希望child1和child2是独立的,并且关闭其中一个不应关闭另一个。
答案 0 :(得分:2)
通常,Qt中的孩子独立于另一个孩子,就像您希望他们那样。但是,当最后一个主窗口关闭时(请参见QApplication :: lastWindowClosed),该应用程序将整体关闭。多数民众赞成在这里发生的可能。我不确定为什么。
您可以尝试为Windows手动定义closeEvents。仍然您的行为很奇怪,因为我记得读过,隐藏父窗口也应该在这里隐藏其子窗口:(https://www.qtcentre.org/threads/61708-Multiple-windows-hide-parent-when-child-shown-unhide-when-child-closed)。