Russian Qt Forum
Сентябрь 30, 2024, 22:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: MDI интерфейс  (Прочитано 1968 раз)
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« : Август 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);
}
 
Но окно не изчезает.
Подскажите почему??? Спасибо!
« Последнее редактирование: Август 21, 2013, 13:01 от demaker » Записан
mutineer
Гость
« Ответ #1 : Август 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 () чем не угодил?
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #2 : Август 21, 2013, 13:10 »

Хотел так сделать Улыбающийся
Код
C++ (Qt)
void MainWindow::closeWindow()
{
    MdiChild *child =  activeMdiChild();
    mdiArea->removeSubWindow(child);
}
 
Но и это сойдет
может поэтому?
QMdiArea::closeActiveSubWindow () чем не угодил?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.112 секунд. Запросов: 23.