Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: mdiArea->closeActiveSubWindow() - глюк или так и должно быть ?
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
potkin
Юзаю виджет mdiArea.
Проблема:
Если открыто много окошек в mdiArea, то при закрытии N-го окна, активным становиться N+1
или
при закрытии последнего окна активным становиться первое.
Так же и в примерах: "Main Windows -> MDI"
Мне такой расклад не подходит.

Мне надо, что бы при закрытии Чилда активным стало не следующее окошко, а предыдущее, то есть при закрытии N-го окна, активным становиться N-1

Можно конечно и цикл использовать:
foreach (QMdiSubWindow *window, mdiArea->subWindowList())
MdiChild *mdiChild = ...
....

пробегать по всем Чилдам и проверять "что-то", но это менингит.
Может есть более лёгкий способ ???

Заранее спасибо.
potkin
Всё таки циклом ...
Делаю так:
void RuhCinCapSub::ActivatedWindow()
{
    foreach (QMdiSubWindow *window, gl->mdiArea->subWindowList())
    {
        if(window->widget()->toolTip().toInt() == this->toolTip().toInt())
        {
            QMdiSubWindow *existing = window;
            if (existing) gl->mdiArea->setActiveSubWindow(existing);
        }
    }
}

В "toolTip()" присваиваю уникальный идентификатор и по нём и ищу.

П.С. Может есть всё таки какие-то встроенные средства ???
Алексей1153
а ассоциацию применить нельзя разве ? Коли уж идентификатор уникальный

Кстати, от foreach у меня один негатив остался - он (и это написано в доке) сначала делает копию контейнера и только копию шмонает. (Я пользуюсь циклом for с итератором)
BRE
Цитата(Алексей1153 @ 16.12.2010, 10:44) *
Кстати, от foreach у меня один негатив остался - он (и это написано в доке) сначала делает копию контейнера и только копию шмонает. (Я пользуюсь циклом for с итератором)

А почему ты думаешь, что копирование Qt-контейнера такая тяжелая операция (грубо говоря это инкремент счетчика). :)
А вот реально копия будет сделана только, если при попытке его модификации (точнее при вызове не константного метода).
Алексей1153
BRE, я об этом не думаю, мне просто не требуется такое поведение, ведь я ХОЧУ менять исходный контейнер через итераторы, а тут такая подстава :) Я первый раз долго не мог понять , что происходит. Потом меня в доку ткнули
potkin
Алексей1153,
Цитата
а ассоциацию применить нельзя разве ? Коли уж идентификатор уникальный

А можно поподробнее ... ?
Алексей1153
я не знаю подробностей, ты их знаешь :) А говорю про, например. std::map
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.