Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: someLogin от Июнь 19, 2009, 00:35



Название: Как расположить виджеты поверх друг друга?
Отправлено: someLogin от Июнь 19, 2009, 00:35
Ну например два QLabel.


Название: Re: Как расположить виджеты поверх друг друга?
Отправлено: pastor от Июнь 19, 2009, 00:42
Может подробней задачу опишешь? Зачем нужно располагать 2 QLabel один над другим?


Название: Re: Как расположить виджеты поверх друг друга?
Отправлено: someLogin от Июнь 19, 2009, 00:49
Не обязательно лейблы, любые виджеты друг на друга, ну например что бы их перетаскивать, в этом случае нижний виджет становиться видимым... Или (если мы говорим о лейблах) в нежнем pixmap изображение рамочки для фотографии, а на верхнем сама фотография...


Название: Re: Как расположить виджеты поверх друг друга?
Отправлено: lit-uriy от Июнь 19, 2009, 04:21
>>в нежнем pixmap изображение рамочки для фотографии, а на верхнем сама фотография
можно рамочку просто рисовать поверх виджета.

Прсто так виджет поверх виджета не положишь.

Либо используй "Графическое представление" (Graphics View)


Название: Re: Как расположить виджеты поверх друг друга?
Отправлено: kirill от Июнь 19, 2009, 05:43
почему же нельзя, можно. Просто нужно отказаться от layout'ов, использовать абсолютное позиционирование.

QLabel * lbl1 = new QLabel(this);
QLabel * lbl2 = new QLabel(this);

lbl1->move(200, 300);
lbl2->move(210, 310);


Название: Re: Как расположить виджеты поверх друг друга?
Отправлено: spectre71 от Июнь 19, 2009, 05:49
Прсто так виджет поверх виджета не положишь.
Почему не положишь?
1) Вариант - грубый
ParentWidget  - QWidget на котором они будут распологаться, не надо ставить ему  QLayout !!!

QWidget* Widget1 = new QWidget(ParentWidget);
QWidget* Widget2 = new QWidget(ParentWidget);

Дальше сам изменяешь их размеры перемещаешь, обрабатываешь ParentWidget::resizeEvent и делаешь необходимые перемещения и ресайзы
2) Вариант - пишем свой QLayout и делаем что хотим



Название: Re: Как расположить виджеты поверх друг друга?
Отправлено: spectre71 от Июнь 19, 2009, 05:51
Хотя QLayout ему можно поставить. Главное не добавлять в него свои перемещаемые виджеты


Название: Re: Как расположить виджеты поверх друг друга?
Отправлено: someLogin от Июнь 19, 2009, 12:20
Может где то есть готовый класс аля QZBoxLayout?  :)

А если нет, подскажите что учесть при его разработке. Многим пригодиться.  :)


Название: Re: Как расположить виджеты поверх друг друга?
Отправлено: ритт от Июнь 19, 2009, 13:24
кому и зачем?
для рамочки вообще лучше перегрузить paintEvent и не городить огород...
и вообще, даже один виджет поверх другого редко бывает нужен (как кнопочки на табах), а уж серия виджетов друг на друге и вовсе излишество.


Название: Re: Как расположить виджеты поверх друг друга?
Отправлено: anaksimandr от Октябрь 04, 2012, 21:13
Если кому то еще интересно - QStackedLayout

\Некропостинг


Название: Re: Как расположить виджеты поверх друг друга?
Отправлено: Bepec от Октябрь 04, 2012, 21:58
Парниш... А парниш. А ты и не в теме то :)