crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в mdiArea->closeActiveSubWindow() - глюк или так и должно быть ?
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Алексей1153 Дата 16.12.2010, 15:13
  я не знаю подробностей, ты их знаешь :) А говорю про, например. std::map
potkin Дата 16.12.2010, 13:47
  Алексей1153,
Цитата
а ассоциацию применить нельзя разве ? Коли уж идентификатор уникальный

А можно поподробнее ... ?
Алексей1153 Дата 16.12.2010, 11:16
  BRE, я об этом не думаю, мне просто не требуется такое поведение, ведь я ХОЧУ менять исходный контейнер через итераторы, а тут такая подстава :) Я первый раз долго не мог понять , что происходит. Потом меня в доку ткнули
BRE Дата 16.12.2010, 10:59
 
Цитата(Алексей1153 @ 16.12.2010, 10:44) *
Кстати, от foreach у меня один негатив остался - он (и это написано в доке) сначала делает копию контейнера и только копию шмонает. (Я пользуюсь циклом for с итератором)

А почему ты думаешь, что копирование Qt-контейнера такая тяжелая операция (грубо говоря это инкремент счетчика). :)
А вот реально копия будет сделана только, если при попытке его модификации (точнее при вызове не константного метода).
Алексей1153 Дата 16.12.2010, 10:44
  а ассоциацию применить нельзя разве ? Коли уж идентификатор уникальный

Кстати, от foreach у меня один негатив остался - он (и это написано в доке) сначала делает копию контейнера и только копию шмонает. (Я пользуюсь циклом for с итератором)
potkin Дата 16.12.2010, 10:27
  Всё таки циклом ...
Делаю так:
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()" присваиваю уникальный идентификатор и по нём и ищу.

П.С. Может есть всё таки какие-то встроенные средства ???
potkin Дата 15.12.2010, 13:37
  Юзаю виджет mdiArea.
Проблема:
Если открыто много окошек в mdiArea, то при закрытии N-го окна, активным становиться N+1
или
при закрытии последнего окна активным становиться первое.
Так же и в примерах: "Main Windows -> MDI"
Мне такой расклад не подходит.

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

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

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

Заранее спасибо.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 20:37