【发布时间】:2014-01-20 22:05:05
【问题描述】:
我的项目中有一个 QMainWindow 作为 GUI 的中心,这个窗口可以打开一个新窗口。我希望当用户关闭主窗口时,主窗口打开的所有其他窗口也将关闭。
我试图在主窗口的析构函数中放置一个信号来调用另一个窗口close() 槽,但它不起作用。我只能通过在主窗口中创建一个closeEvent() 来完成这项工作,它将向另一个窗口关闭插槽发送信号。
所以我的问题是,Qt 如何处理所有这些?如果窗口存在,如果主窗口在其析构函数中触发它,为什么它们无法接收到信号?我将析构函数中的其他信号发送给其他线程,它们接收它们就好了。
【问题讨论】:
-
为什么不让主窗口成为应用程序所有其他“逻辑子”窗口的父窗口?在这种情况下,关闭主窗口将关闭所有子窗口。
-
我将主窗口的父窗口设为窗口的父窗口...它只是构造函数中的
this吗? -
我猜不是...我只是放置了一个
this并且窗口被渲染在主窗口空间内 -
使用 move 成员函数将新窗口移动到您希望它显示的位置。还是您想说您没有第二个窗口?如果您使用 QWidget 派生类作为窗口(并有一个父窗口),您可以使用 setWindowFlags(Qt::Window); (查看文档以获取其他选项,而不是 Qt ::窗口)
-
我只是在一些文档中发现了一个 QWidget 的子类...这是错的吗?