Название: Как свернуть все родительские окна? Отправлено: Barmaglodd от Октябрь 24, 2008, 15:03 Есть главное окно программы, в процессе работы открывается дочернее модальное окно. Если нажать на кнопочку свернуть у дочернего, останется открытым родительское, которое не принимает событий от клавиатуры и мыши. На панели задач отображаются оба окна, но пользователи в ступоре :( Хочется, чтобы на панели задач была одна кнопочка для приложения, независимо от количества открытых окон, и ,при нажатии кнопки свернуть у активного окна, сворачивались все родительские.
Всё описанное под виндой :) Название: Re: Как свернуть все родительские окна? Отправлено: pastor от Октябрь 24, 2008, 15:07 Мне кажеться MDI интерфейс вам поможет. Посмотрите пример QTDIR\examples\mainwindows\mdi
Название: Re: Как свернуть все родительские окна? Отправлено: Barmaglodd от Октябрь 24, 2008, 15:27 Спасибо, я почему-то в эту сторону совсем не думал. Мне даже QStackedWidget может помочь.
Название: Re: Как свернуть все родительские окна? Отправлено: lit-uriy от Октябрь 24, 2008, 15:34 2 Barmaglodd, дочернему окну надо родителя задавать, тогда дочернего окна на панели задач не будет.
Название: Re: Как свернуть все родительские окна? Отправлено: Barmaglodd от Октябрь 25, 2008, 08:59 2 lit-uriy, точно :) Но проблема со сворачиванием всего приложения остаётся, родительское окно всё равно висит, а дочернее в маленькую полосочку в углу экрана сворачивается.
Название: Re: Как свернуть все родительские окна? Отправлено: Alex03 от Октябрь 25, 2008, 09:43 А зачем разрешать сворачивать модальный диалог?
Название: Re: Как свернуть все родительские окна? Отправлено: Barmaglodd от Октябрь 25, 2008, 10:14 А раньше и нельзя было, но попросили, т.к. иначе до рабочего стола не добраться (Win+D, кнопочка "свернуть всё", поиск через меню пуск и т.п. слишком "сложно"). Может это мой прощёт.
Приложение построено так: главное окно в нём список основных действий, пользователь выбирает нужное, открывается модальный диалог, где дальше продолжается работа. Название: Re: Как свернуть все родительские окна? Отправлено: Alex03 от Октябрь 25, 2008, 10:20 Можно hide()-ить главное окно перед exec()-ом модального и show()-ить после exec()-а... правда кривоватостью попахивает. :)
Название: Re: Как свернуть все родительские окна? Отправлено: Barmaglodd от Октябрь 25, 2008, 10:36 Можно, но это крайнее средство :) Я скорее сделаю QStackedWidget на главной форме и в нём буду показывать диалог.
Название: Re: Как свернуть все родительские окна? Отправлено: lit-uriy от Октябрь 25, 2008, 11:56 2 Barmaglodd, мысль в слух:
Ловить событие в классе диалога, о сворачивании, если родитель задан, то вызывать у последнего метод сворачивающий его на панель задач. Название: Re: Как свернуть все родительские окна? Отправлено: Tonal от Октябрь 26, 2008, 09:45 У меня, в 4.4.1 приложение само сворачивается при сворачивании модального диалога.
Раньше был код сворачивания руками - я его выкинул. :) Но, если он кого-то интересует, то не жалко, вот: Код В диалог требуется вставить шаблонный обработчик: Код Ну или в базовый класс прописать. :) Название: Re: Как свернуть все родительские окна? Отправлено: Barmaglodd от Октябрь 27, 2008, 08:54 Как раз собирался на 4.4 переходить, если там всё работает "из коробки", то это ещё один аргумент в пользу перехода :)
Название: Re: Как свернуть все родительские окна? Отправлено: Barmaglodd от Ноябрь 25, 2008, 08:42 У меня, в 4.4.1 приложение само сворачивается при сворачивании модального диалога. Qt 4.4.3. Win 2000 SP4, Win XP SP2, Win 2003 Server R2 везде не сворачивается :(Сделал в базовом классе Код Родительское окно сворачивает, но модальный диалог сворачивается в полоску в углу экрана :( Может это из-за того, что у меня главное окно потомок QDialog, а не QMainWindow? |