我根据网上找到的教程创建了一个简单的 MDI 父子应用程序。QMainWindow 有一个指向子窗口的指针。以下代码与适当的连接功能捆绑在一起。
main_window.h 文件
公共插槽: 无效 openChildWindow(); 私人的: ui::主窗口 *ui; 子窗口 *子窗口;
main_window.cpp 文件
无效的 MainWindow::openChildWindow() { childWindow = new ChildWindow(ui->mdiArea); // 一定要在某个地方销毁你的窗口 childWindow->resize(400, 320); childWindow->show(); }
我的问题是将 mdi 子窗口存储在 mdi 父级中的最佳方法是什么?它应该是指向子窗口的指针列表吗?
使用当前的实现,我可以同时创建和关闭许多 mdi 子窗口,但有时它们在关闭后会留下阴影(例如,当我最小化和最大化子窗口时)。难道是我忘记在某个地方调用 mdi 子析构函数了吗?目前只有:
ChildWindow::~ChildWindow() { 删除用户界面; std::cout << "我死了!" << std::endl; }
但我不会在任何地方手动调用它。当整个 Qt 程序终止时,我可以在 Qt Creator 控制台中看到“我死了”(但它应该在我关闭子窗口时出现)