Поиск:

Ответ в темуСоздание новой темы Создание опроса
> диалоговое окно и QMdiArea, запрет на перемещение вне области 
:(
    Опции темы
uwannadie
Дата 23.9.2014, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

Репутация: нет
Всего: 1



в-общем возникла необходимость сделать mdi-прогу.
в некоторых дочерних окнах есть свои диалоги с кучей полей ввода и несколькими вкладками.
возник вопрос - как эти диалоговые окна добавить в QMdiArea?
--------------------
PM MAIL   Вверх
math64
Дата 23.9.2014, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



А они и не добавляются, а существуют отдельно - как и не в mdi приложении.
Как альтернатву, можешь заменить их на QDockWidget.
PM   Вверх
uwannadie
Дата 23.9.2014, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

Репутация: нет
Всего: 1



не вариант.
максимум чего добился - сделал так, чтобы созданное окно не вылезало за пределы родительского. но это редкостный велосипед.
--------------------
PM MAIL   Вверх
math64
Дата 23.9.2014, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Покажи исходник или скриншот - чего хочешь добиться.
PM   Вверх
uwannadie
Дата 23.9.2014, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

Репутация: нет
Всего: 1



взял за пример стандартный mdi.
user posted image
--------------------
PM MAIL   Вверх
math64
Дата 23.9.2014, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Не знаю, зачем.
Можно вывести нормальный модальный диалог QDialog.
Можно создать обычное QMDISubWindow - но зачем заботиться чтобы оно не вылезало за пределы родительского. Это против правил mdi приложения. Кроме того, mdi-окна могут быть максимизированы, расположены каскадом или черепицей.
Можно создать QDockWidget
Можно сделать перетаскивание между QDialog, QMDISubWindow и QDockWidget.

PM   Вверх
uwannadie
Дата 23.9.2014, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

Репутация: нет
Всего: 1



Цитата(math64 @ 23.9.2014,  12:13)
Не знаю, зачем.
Можно вывести нормальный модальный диалог QDialog.
Можно создать обычное QMDISubWindow - но зачем заботиться чтобы оно не вылезало за пределы родительского. Это против правил mdi приложения. Кроме того, mdi-окна могут быть максимизированы, расположены каскадом или черепицей.
Можно создать QDockWidget
Можно сделать перетаскивание между QDialog, QMDISubWindow и QDockWidget.

никому не нужные свистоперделки, но "надо сделать именно так и никак иначе" smile 
--------------------
PM MAIL   Вверх
math64
Дата 23.9.2014, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Вот у меня есть впомогательная функция для открытия окна (каждое окон показывает одну или несколько таблиц из БД), нормалное состояние - максимизировано. Можешь попробовать сделать что-то подобное:
Код

QWidget* MainWindow::addSubWindow(QWidget *widget, QAction *action)
{
    if (!widget)
        return NULL;
    QMdiSubWindow* subWindow = NULL;
    if (action) {
        // Новая форма
        widget->setWindowTitle(action->text());
        widget->setWindowIcon(action->icon());
        subWindow = ui->mdiArea->addSubWindow(widget);
        subWindow->setWindowIcon(action->icon());
    } else {
        // Поиск открытой формы
        foreach(QMdiSubWindow* sub, ui->mdiArea->subWindowList()) {
            if (sub->widget() == widget) {
                subWindow = sub;
                break;
            }
        }
        if (!subWindow)
            return NULL;
    }
    subWindow->showMaximized();
    ui->mdiArea->setActiveSubWindow(subWindow);
    return widget;
}

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1759 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.