2016-01-01 5 views
4

Qt 5.5.0Предотвращение QDockWidget Autosizing поведение

В моем приложении, у меня есть QGraphicsView в качестве главного виджета и QDockWidget для свойств. Цель состоит в том, чтобы пользователь мог выбрать элемент в графическом представлении и, в зависимости от элемента, представить соответствующие свойства для этого элемента.

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

Это отлично работает! Однако при выборе разных элементов док сжимается или растет на основе показанного виджета. Это очень раздражает и довольно раздражает. Дело в том, что, когда пользователь вручную изменяет размер док-станции, он поддерживает этот размер. Я хочу, чтобы поддерживаемый размер был по умолчанию, а не этим режимом автосохранения.


Вещи, которые я не пробовал:

Я попытался изменить sizePolicy() дока и MainWindow: Никакого эффекта.

Я установил минимальный размер для моего менеджера свойств, который действительно предотвращает сокращение док-станции при отображении меньшего набора свойств. Тем не менее, я все еще хочу, чтобы пользователь мог сжать док до меньшего размера, если они хотят, и этот метод предотвращает ...


Вывод:

Есть ли флаг или что-то, что устанавливается, когда пользователь изменяет размер док-станции, которая сообщает ей, что она поддерживает этот размер? Если да, есть ли способ вручную установить его?

Я еще не пробовал подкласс QDockWidget или QMainWindow. Есть ли метод (ы), который я могу переопределить для достижения правильного поведения?

Спасибо за помощь!

+0

[Это] (http://stackoverflow.com/questions/21739119/qt-hboxlayout-stop-mainwindow-from-resizing-to-contents) может дать вам некоторую информацию. – LogicStuff

+2

@LogicStuff Большое спасибо, QSizePolicy :: Игнорировал то, что мне было нужно :) – BenSeawalker

+1

Если бы у меня было больше бонусов, чтобы дать - именно то, что мне нужно. –

ответ

3

Все, что необходимо было назвать

setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); 

в конструкторе моего свойства менеджера виджета (центральный виджет в QDockWidget)

Я также перегруженную функцию sizeHint() для возврата респектабельный размер по умолчанию.

Смежные вопросы