QWidget* ImprovedWorkspace::addWindow(QWidget* child,QAction* action) { QMdiSubWindow* sub = addSubWindow(child); if(viewMode()==QMdiArea::TabbedView) { action->setChecked(true); sub->setVisible(true); child->setVisible(true); } insertActionAndSubWindow(action,sub); connect(action,SIGNAL(triggered()),this,SLOT(ensurePresent())); sub->setAttribute(Qt::WA_DeleteOnClose, false); child->setAttribute(Qt::WA_DeleteOnClose, false); sub->setObjectName(child->objectName()); sub->installEventFilter(this); return sub; }