Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2013, 15:31   #1
Lasor
Пользователь
 
Регистрация: 05.12.2012
Сообщений: 67
По умолчанию MDI в QtCreator

Всем доброго времени суток.
Вот стал развлекаться с MDI-приложением. Всё сделал и окошки открываются/закрываются... Одна беда - окошки могут перетаскиваться за границы видимой области QMdiArea (растягиваться).
Есть идеи как запретить перетаскивание за границы?
Ставил окнам setFixedSize - помогает только в сторону уменьшения (нельзя сделать окно меньше FixedSize), а вот увеличить (растянуть) можно.
Lasor вне форума Ответить с цитированием
Старый 11.02.2013, 23:14   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Прикрепил пример с MDI из книги "Foundations of Qt Development"

Lasor, прикрепите файлы проекта
Вложения
Тип файла: zip mdi.zip (13.3 Кб, 19 просмотров)
8Observer8 вне форума Ответить с цитированием
Старый 12.02.2013, 12:56   #3
Lasor
Пользователь
 
Регистрация: 05.12.2012
Сообщений: 67
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Прикрепил пример с MDI из книги "Foundations of Qt Development"

Lasor, прикрепите файлы проекта
Вы создаёте рабочую область приложения, используя объект QWorkspace.
Я же пытаюсь сделать рабочую область, используя компонент QMdiArea.
Суть вопроса в следующем: как запретить вытаскивать окна за рабочую область? Это реализовано по-умолчанию в QWorkspace.
Lasor вне форума Ответить с цитированием
Старый 22.05.2013, 11:51   #4
Lasor
Пользователь
 
Регистрация: 05.12.2012
Сообщений: 67
По умолчанию

Может быть, кто-нибудь знает, как найти нужное окно в QMdiArea? То есть, я создал некоторое количество окон, которые создавал так:
Код:
wgt = new SomeWidget();
Mdi->addSubWindow(wgt);
И теперь необходимо найти нужное окно (по параметру SomeWidget).
Пробовал static/dynamic_cast. Не помогает... (
Lasor вне форума Ответить с цитированием
Старый 23.05.2013, 09:15   #5
Lasor
Пользователь
 
Регистрация: 05.12.2012
Сообщений: 67
По умолчанию

Решено.
Нашёл интересный способ поиска нужного окна в QMdiArea. Суть такова:
Код:
if (dynamic_cast<Your_Widget_Class*>(this->subWindowList().at(i)->widget()))
{
    if (dynamic_cast<Your_Widget_Class*>(mdiArea->subWindowList().at(i)->widget())->SomeMethod() == SomeVal)
    {
        Some_Actions;
    }
}
Иными словами, если вы знаете, что должен вернуть метод конкретного экземпляра класса (если есть несколько окон, содержащих однотипные виджеты), то после успешного преобразования типов можно сравнивать возвращаемое значение. Если же такое окно одно, то использовать условие не нужно.
Lasor вне форума Ответить с цитированием
Старый 03.06.2013, 13:11   #6
Lasor
Пользователь
 
Регистрация: 05.12.2012
Сообщений: 67
По умолчанию

Недавно столкнулся ещё с одной проблемой в использовании QMdiArea: не могу понять, как ловить событие деактивации одного и активации другого окна.
То есть я хочу, чтобы в моём многооконном приложении пользователь не мог сменить фокус с окна до тех пор, пока не закончит с ним работу.
Окна в QMdiArea хранятся в контейнере SubWindowList() и они все одного типа: QMdiSubWindow, у которого нет метода или сигнала, свидетельствуеющего об активации/деактивации окна.
Я нашёл только один сигнал в самом QMdiArea - subWindowActivated(QMdiSubWindow*). Но его обработка у меня получается рекурсивной (
Может кто сталкивался с подобной задачкой?
Lasor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сборка Qt (QtCreator + MinGW) stas135642 Qt и кроссплатформенное программирование С/С++ 1 08.01.2013 17:35
Не могу правльно написать програму на C++ в Qtcreator Renford Помощь студентам 2 20.10.2012 15:43
3 програмы на C++ в Qtcreator Renford Помощь студентам 2 15.10.2012 14:03
Ощибка создания MDI формы. Cannot create form. No MDI forms are currently active LISTAT Общие вопросы Delphi 1 26.05.2012 21:06
Передача параметра с MDI родителя в MDI child через DLL ByXalkin Общие вопросы Delphi 0 15.12.2009 17:21