Qt: Drag & amp; Отбросьте виджеты для достижения произвольного макета (разделения), как в Eclipse

Мне известны док-виджеты, разделители и т. Д. Тем не менее, мне интересно, возможно ли создать гибкую систему разделения, как в Eclipse: когда любой виджет просто продолжает разделяться по вертикали или по горизонтали в зависимости от положения курсора во время перетаскивания.

Например, самый первый виджет A занимает целое QMainWindow, Второй B сначала открывается на вкладке, так что это либо

-----
| A |
-----

или же

-----
| B |
-----

Затем я перетаскиваю вкладку B (скажем так) в правой части QMainWindow — и получить вертикальный раскол, как:

---------
| A | B |
---------

Затем я открываю какой-то другой виджет C, Он снова открывается на вкладке (скажем, в левом и верхнем углу по умолчанию), так что это либо

---------
| A | B |
---------

или же

---------
| C | B |
---------

Теперь я перетаскиваю вкладку C к основанию B и получить:

---------
|   | B |
A -----
|   | C |
---------

Или если бы я перетащил его в нижнюю середину QMainWindow Я бы получил:

---------
| A | B |
---------
|   C   |
---------

Я надеюсь, у вас есть идея. Если вы знакомы с Eclipse, это должно быть еще проще для понимания. Ключевым моментом здесь является то, что я могу делать это бесконечно много раз и создавать абсолютно индивидуальный макет, например:

-----------------
|   | B | G |   |
| A ---------   |
|   | D |   | F |
--------- E |   |
|   C   |   |   |
-----------------
|       H       |
-----------------

Этот пример выглядит неопрятно, и выгода такого сумасшедшего макета, конечно, сомнительна, но в любом случае вопрос заключается в том, предоставляет ли Qt такое поведение либо из коробки, либо, по крайней мере, какие-то средства для его достижения с минимальными усилиями по написанию кода.

1

Решение

Вы, вероятно, хотите посмотреть на включение setDockNestingEnabled(bool) на ваше QMainWindow, Это даст вашим докам возможность делиться во время операций перетаскивания.

Вы можете комбинировать это с поддержкой перетаскивания в других виджетах, таких как виджет вкладок.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector