Russian Qt Forum

Qt => Вопросы новичков => Тема начата: demaker от Август 21, 2013, 12:58



Название: MDI интерфейс
Отправлено: demaker от Август 21, 2013, 12:58
Пытаюсь разобраться с MDI - интенрфейсом
хочу закрыть одно из окон

Код
C++ (Qt)
 
...
closeSubWindow = new QAction(tr("&Close window"),this);
closeSubWindow->setShortcuts(QKeySequence::Close);
closeSubWindow->setStatusTip(tr( "Close the document "));
connect(closeSubWindow,SIGNAL(triggered()),this,SLOT(closeWindow()));
...
 
MdiChild *MainWindow::activeMdiChild()
{
    if (QMdiSubWindow *activeSubWindow = mdiArea->activeSubWindow())
        return qobject_cast<MdiChild *>(activeSubWindow->widget());
    return 0;
}
void MainWindow::closeWindow()
{
    MdiChild *child =  activeMdiChild();
    mdiArea->removeSubWindow(child);
}
 
Но окно не изчезает.
Подскажите почему??? Спасибо!


Название: Re: MDI интерфейс
Отправлено: mutineer от Август 21, 2013, 13:04
Цитировать
If a QMdiSubWindow is passed in its parent is set to 0 and it is removed, but if an internal widget is passed in the child widget is set to 0 but the QMdiSubWindow is not removed.
может поэтому?

QMdiArea::closeActiveSubWindow () чем не угодил?


Название: Re: MDI интерфейс
Отправлено: demaker от Август 21, 2013, 13:10
Хотел так сделать :)
Код
C++ (Qt)
void MainWindow::closeWindow()
{
    MdiChild *child =  activeMdiChild();
    mdiArea->removeSubWindow(child);
}
 
Но и это сойдет
может поэтому?
QMdiArea::closeActiveSubWindow () чем не угодил?