Как закрепить QDockWidgets внутри QSplitter? - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь, чтобы QSplitter принимал QDockWidgets в моем приложении. До сих пор я делал все через Qt Designer, и я создал три отдельных QWidget. Затем я выбираю все три QWidgets и щелкаю их правой кнопкой мыши и выбираю Layout-> Layout Vertical in Splitter.

Это довольно хорошо укладывает все три виджета в разделитель. Затем я перетащил виджет Dock в окно «Объект / класс» в правом верхнем углу и установил их в виджете Splitters. Это удачно помещает QDockWidget в виджет. Однако, когда я запускаю программу, я не могу щелкнуть и перетащить виджеты на панели. Если я дважды щелкну на виджете дока, появится виджет дока, однако я не смогу вернуть его обратно, так как он технически не был пристыкован. Что создает проблему с тем, что виджет не может быть прикреплен где-либо еще. Его нельзя закрепить в классе QMainWindow или в классе QSplitter.

Есть ли в любом случае, чтобы QDockWidget был закреплен внутри QSplitter и имел функциональность QDockWidget?

1 Ответ

0 голосов
/ 13 марта 2019

После добавления виджета дока к QSplitter виджет стал частью сплиттера.

Вы можете попробовать проверить вот так

//If sure of Dockwidget at zeroth position
QDockWidget *widget1 = (QDockWidget*)ui->splitter->children().at(0);

Dockwidget имеет функцию плавающего окна верхнего уровня. Но вы можете сделать dockwidget похожим на другие виджеты, установив QDockWidget::NoDockWidgetFeatures

Или:

Перейти к окну объекта в Qtdesigner (вверху -> справа) И выберите виджет-док, добавленный в сплиттер.

В окне свойств внизу прокрутите вниз и найдите «функции».

Затем снимите флажки с таких функций, как movalble, closable и т. Д. Я сделал это NoDockWidgetFeatures.

или

Вы можете установить программно, используя setFeatures(QDockWidget::NoDockWidgetFeatures)

...