Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Igors от Март 14, 2014, 12:58



Название: QLayout, айтемы "внахлест"
Отправлено: Igors от Март 14, 2014, 12:58
Добрый день

Как сделать чтобы айтемы перекрывались - достаточно на 1 пиксель. По поводу "зачем": напр айтем обведен черной рамкой 1 пиксель, если такие стоят рядом, визуально получается неприятно жирная черная линия.

Спасибо


Название: Re: QLayout, айтемы "внахлест"
Отправлено: Bepec от Март 14, 2014, 13:34
Недавно мучался с этой проблемой. Гарантированного решения не нашёл, окромя изменения размеров layout'a.
Проще выражаясь - ужимаем его до тех пор, пока итемы не наложатся друг на друга. Но это сработает только с однотипными виджетами.



Название: Re: QLayout, айтемы "внахлест"
Отправлено: xokc от Март 14, 2014, 13:49
Вижу 2 варианта: писать собственный Layout или отслеживать перемещение айтемов и при их "соседстве" не отрисовывать рамку на соответствующей стороне одного из них. Я как-то писал собственный Layout, было не очень сложно, но подробностей уже не помню.


Название: Re: QLayout, айтемы "внахлест"
Отправлено: Igors от Март 15, 2014, 16:28
Вижу 2 варианта: писать собственный Layout или отслеживать перемещение айтемов и при их "соседстве" не отрисовывать рамку на соответствующей стороне одного из них. Я как-то писал собственный Layout, было не очень сложно, но подробностей уже не помню.
Пока наметил такой план:

- унаследоваться и в перекрытом setGeometry сначала вызвать setGeometry родителя. Потом подвинуть нужные айтемы взяв смещение из своей мапы <QWidget *, QSize>. Дойдет до дела - отпишусь