Мне известны док-виджеты, разделители и т. Д. Тем не менее, мне интересно, возможно ли создать гибкую систему разделения, как в 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 такое поведение либо из коробки, либо, по крайней мере, какие-то средства для его достижения с минимальными усилиями по написанию кода.
Вы, вероятно, хотите посмотреть на включение setDockNestingEnabled(bool)
на ваше QMainWindow
, Это даст вашим докам возможность делиться во время операций перетаскивания.
Вы можете комбинировать это с поддержкой перетаскивания в других виджетах, таких как виджет вкладок.
Других решений пока нет …