Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: like-nix от Февраль 11, 2011, 19:38



Название: Управление окнами
Отправлено: like-nix от Февраль 11, 2011, 19:38
Подскажите пожалуйста какие компоненты использовать.

Допустим у нас есть главное окно, нужно сделать чтобы например по нажатию на кнопку создавалось еще одно окно, но чтобы оно не блокировало главное окно. Хочу получить поведение похожее на то когда в любом web браузере нажимаем new window, но в тоже время, когда закрываем главное окно остальные окна тоже должны закрываться.


Название: Re: Управление окнами
Отправлено: like-nix от Февраль 11, 2011, 19:41
MDIArea не подходит наверное, потому как окна там только в пределах ареа =), а мне нужно чтобы окна были независимые чтобы одно можно было бы свернуть в трей а остальные остались на своих местах.


Название: Re: Управление окнами
Отправлено: like-nix от Февраль 11, 2011, 19:44
Конечно заказчику хочется по возможности чтобы эти окна как например в гугл хром могли быть получены из табов и при желании обратно приклеены как табы к какому нибудь окну этой программы, но это уже какбы фичи, которые хорошое если будут т.е. не обязательные.


Название: Re: Управление окнами
Отправлено: santaclaus от Февраль 11, 2011, 22:19
Создай свой класс унаследованный от QWidget, сделай форму какую хочешь, потом при нажатии кнопочке в главной форме "Новое окошко" делай примерно так:

Код:
MyForm *mf = new MyForm();// создаешь новую форму
connect(this, SIGNAL(destoyed()), mf, SLOT(close ()));// привязываешь сигнал что если главное окно закрывается, то форма закрывается вместе с ним
mf->show()// ну и показываем новую форму


Название: Re: Управление окнами
Отправлено: like-nix от Февраль 11, 2011, 22:20
Сделал лист окон в главном окне и при закрытии главного окна окна из этого листа закрываю.


Название: Re: Управление окнами
Отправлено: like-nix от Февраль 11, 2011, 22:24
santaclaus тоже вариант =)


Название: Re: Управление окнами
Отправлено: like-nix от Февраль 12, 2011, 17:47
Подскажите можно ли DockWidget создать как отдельное окно не привязанное к главному окну?


Название: Re: Управление окнами
Отправлено: kdm от Февраль 12, 2011, 21:40
Я не пробовал, но что-то подсказывает, что можно при перетаскивании зависимого окна смотреть, если оно находится в определенной области, то просто зависимое окно прятать и добавлять виджет зависимого окна в QTabWidget.
То есть примерно так:

если позиция зависимого окна изменяется, то смотреть если его левая часть его заголовка рядом с кнопками (которые означают закладки) QTabWidget, то зависимоеокно.hide, tabwidget.addwidget(зависимоеокно), ну и что-то такое. И наоборот смотреть если пользователь драгает закладку, то отделять ее из tabwidget и зависимоеокно.show(). Все это не выполняя уничтожение виджета зависимого окна.

Сам не пробовал, просто прочитал и такая идея пришла. Не пинайте если бред.  :-\