在qmainwindows窗口中创建新窗口qwidget,想关闭windows窗口时新窗口也关闭
时间: 2024-09-07 15:03:37 浏览: 62
PyQt5点击按钮弹出自定义窗口 创建新窗口
5星 · 资源好评率100%
在Qt中,如果你在`QMainWindow`窗口中创建了一个嵌套的`QWidget`作为子窗口,并希望当主窗口关闭时,子窗口也随之关闭,你可以通过关联它们之间的生命周期事件来实现。通常,我们会把子窗口设置为主窗口的一个成员变量,然后在主窗口的`closeEvent`信号连接到子窗口的`deleteLater`槽函数。
以下是大致步骤:
1. 在`QMainWindow`的构造函数中创建并添加子窗口:
```cpp
QWidget* childWindow = new QWidget(this); // 创建子窗口
setCentralWidget(childWindow); // 把子窗口设为主窗口的内容
// 如果需要,可以设置子窗口的一些属性,比如布局、大小等
```
2. 定义`QMainWindow`的`closeEvent`信号处理函数,确保子窗口关闭:
```cpp
void QMainWindow::closeEvent(QCloseEvent* event) {
if (childWindow) { // 检查子窗口是否存在
childWindow->deleteLater(); // 调用子窗口的deleteLater方法,关闭它
}
// 然后继续关闭自身的操作,如event->accept() 或者 event->ignore()
}
```
这样,当你关闭`QMainWindow`时,子窗口`QWidget`会被正确地删除,进而关闭。
阅读全文