QT通过new创建的子窗口,什么情况下会清除数据,C++给出示例
时间: 2024-01-19 07:03:02 浏览: 77
在 QT 中,通过 `new` 关键字创建的子窗口,在以下情况下会被清除数据:
1. 在子窗口被关闭时手动调用 `delete` 函数释放内存。
```cpp
// 创建子窗口
MyWidget* widget = new MyWidget(this);
// 显示子窗口
widget->show();
// 关闭子窗口时手动释放内存
widget->close();
delete widget;
```
2. 在父窗口的析构函数中将子窗口从父窗口中移除,并调用 `delete` 函数释放内存。
```cpp
class MyWindow : public QMainWindow
{
public:
MyWindow(QWidget *parent = 0) : QMainWindow(parent)
{
// 创建子窗口
m_widget = new MyWidget(this);
// 显示子窗口
m_widget->show();
}
~MyWindow()
{
// 将子窗口从父窗口中移除,并释放内存
delete m_widget;
}
private:
MyWidget* m_widget;
};
```
在以上示例中,`MyWidget` 是通过 `new` 关键字创建的子窗口。在第一个示例中,手动调用 `delete` 函数释放内存;在第二个示例中,将子窗口从父窗口中移除,并在父窗口的析构函数中调用 `delete` 函数释放内存。
阅读全文