Название: модальный QMainWindow и mousePressEvent Отправлено: muaddib1981@mail.ru от Декабрь 17, 2008, 12:50 Есть следующий код:
Код:
MousePressEvent не вызывается если дочернее окно модальное: childwindow->setWindowModality(Qt::WindowModal); Название: Re: модальный QMainWindow и mousePressEvent Отправлено: spirit от Декабрь 17, 2008, 12:54 это сильно ;)
Код: ... Название: Re: модальный QMainWindow и mousePressEvent Отправлено: muaddib1981@mail.ru от Декабрь 17, 2008, 12:55 Да невнимательно писал, сорри.
Название: Re: модальный QMainWindow и mousePressEvent Отправлено: spirit от Декабрь 17, 2008, 13:12 добавь парента в TChildWindow и будет работать.
Название: Re: модальный QMainWindow и mousePressEvent Отправлено: muaddib1981@mail.ru от Декабрь 17, 2008, 13:15 Это как? Я вроде делаю: childwindow->setParent(this);
Название: Re: модальный QMainWindow и mousePressEvent Отправлено: spirit от Декабрь 17, 2008, 13:18 Код
Название: Re: модальный QMainWindow и mousePressEvent Отправлено: muaddib1981@mail.ru от Декабрь 17, 2008, 13:26 не работает, вернее работает, но не как надо. childwindow с этим кодом можно передвигать за пределы родительского окна, а мне надо чтобы TMainWindow нельзя было.
Название: Re: модальный QMainWindow и mousePressEvent Отправлено: spirit от Декабрь 17, 2008, 13:28 а почему QDialog нельзя использовать?
Название: Re: модальный QMainWindow и mousePressEvent Отправлено: muaddib1981@mail.ru от Декабрь 17, 2008, 14:02 Надо попробовать.
Название: Re: модальный QMainWindow и mousePressEvent Отправлено: muaddib1981@mail.ru от Декабрь 17, 2008, 14:07 Точно также, если не добавлять parent, то mousePressEvent не вызывается, а если добавить, то дочернее окно выходит за пределы родительского окна.
Название: Re: модальный QMainWindow и mousePressEvent Отправлено: pastor от Декабрь 17, 2008, 14:49 А какое поведение нужно получить в итоге? Может лучше посомтреть в сторону QMdiArea + QMdiSubWindow?
Название: Re: модальный QMainWindow и mousePressEvent Отправлено: muaddib1981@mail.ru от Декабрь 17, 2008, 15:00 Мне нужно:
1) дочернее окно окно должно быть модальным 2) дочернее окно должно быть без title bar (как раз получается при помощи setParent, при QMdiArea и QMdiSubWindow такое получить не удается) 3) дочернее окно не должно выходить за пределы родительского окна (опять же setParent, меня устраивал но на модальных дочерних окнах не вызывается mousePressEvent). Название: Re: модальный QMainWindow и mousePressEvent Отправлено: spirit от Декабрь 17, 2008, 15:08 и это дочернее окно должно двигаться внутри парента?
Название: Re: модальный QMainWindow и mousePressEvent Отправлено: muaddib1981@mail.ru от Декабрь 17, 2008, 15:18 Совершенно верно!
Название: Re: модальный QMainWindow и mousePressEvent Отправлено: spirit от Декабрь 17, 2008, 15:21 ну если QWorspace || QMdiArea не подходит, тогда можно создать виджет указав паренто, но убрать тайтл, следить чтобы этот виджет не выходил за размеры парента + самому реализовать перетаскивание за любую область виджета.
Название: Re: модальный QMainWindow и mousePressEvent Отправлено: SABROG от Декабрь 17, 2008, 16:05 Изначально забавная задачка. Создать модальное дочернее окно, которое должно быть единственно активным среди таких же дочек, с теми же правами. Это равносильно тому, чтобы кинуть на форму 10 кнопок, одну из них сделать модальной, она должна будет работать, а другие 9 ждать пока на нее не нажмут...
В QDialog'e используется собственный QEventLoop, в то время как для главного окна и его деток он один и запустив модальную детку блокируется и все остальное. В общем человек хочет сделать также как в браузере модальное окошко яваскрипта, которое за пределы браузера не выползает. Мне кажется, что вместо реального использования модальности тут можно тупо создать прозрачное окно поверх всего остального и на него поместить свой виджет. В результате нижние окна будут как бы блокированы (правда с фокусом и навигацией TABом могут быть косяки). |