Трудно добиться успеха на "клиентской" стороне Qt; это действительно будет принадлежать самому Qt. Я реализовал несколько более общий вариант этого за пару лет go, и просто для того, чтобы он хорошо работал на Windows, Ma c и KDE, код расширился до тысячи строк, чтобы охватить все случайные угловатые чехлы, с еще тысячами для испытательного жгута. Было на удивление сложно реализовать тесты - особенно на X11, где не было возможности использовать собственные API-интерфейсы X для проверки предполагаемого поведения. Вскоре я избавился от этого чудовища - в этом не было необходимости.
Боковую панель можно создать как отдельный безрамочный виджет верхнего уровня, который перемещается так, что его верхний правый угол выровнен с верхним левый угол окна контента и изменяет размеры по вертикали в соответствии с вертикальным размером окна контента. Конечно, вы можете сделать его немного короче (по вертикали), при этом выровняв его по центру по вертикали с окном контента.
Для этого вам нужно захватить события изменения размера окна контента: боковая панель должна установите себя в качестве фильтра событий для окна контента.
Вы хотите, чтобы боковая панель была дочерним элементом Qt окна контента, , но вам также необходимо сделать его окном верхнего уровня, т.е. установить на нем флаг Qt::Window
, чтобы оно стало верхним уровнем, а не подвиджетом окна контента.