Привет всем, не могу закрыть окно, имеется программа на основе MDI окон, основное окно программы - это QMidArea, в ней соответственно открываются окна:
lgot_rech *lgota = new lgot_rech;
lgota->setAttribute(Qt::WA_DeleteOnClose);
ui->area->addSubWindow(lgota)->setFixedSize(708,383);
lgota->show();
так вот пытаюсь из отрытого окна lgota, закрыть это же окно, например close(), и получается, что с окна lgota просто исчезают все компоненты, а само окно не закрывается, а остается пустым! Как можно не через нажатие на крестик в правом верхнем углу, а через код его закрыть?
Такое поведение скорей всего потому что lgot_rech не наследник QMdiSubWindow.
Для начала надо примерно так:
QMdiSubWindow *subWindow = ui->area->addSubWindow(new lgot_rech);
subWindow->setAttribute(Qt::WA_DeleteOnClose);
subWindow->setFixedSize(708,383)
subWindow->show();
А закрыть подокно из метода класса lgot_rech можно попробовать так:
Если не получится (в случае QMdiSubWindow::isWindow()==false, не проверял), то можно попробовать через приведение типов:
QWidget *parent = this->parentWidget();
while (parent) {
QMdiSubWindow *subWindow = qobject_cast<QMdiSubWindow *>(parent);
if (subWindow) {
subWindow->close();
break;
}
parent = parent->parentWidget();
}
Думаю идея ясна.