Я только начал работать над новым проектом С++/Qt. Это будет IDE на основе MDI с прикрепленными виджетами для таких вещей, как дерево файлов, браузер объектов, выход компилятора и т.д. Одну вещь прослушивает меня до сих пор: я не могу понять, как программно сделать QDockWidget
меньше. Например, этот фрагмент создает мое нижнее окно док-станции "Информация о сборке":
m_compilerOutput = new QTextEdit;
m_compilerOutput->setReadOnly(true);
dock = new QDockWidget(tr("Build Information"), this);
dock->setWidget(m_compilerOutput);
addDockWidget(Qt::BottomDockWidgetArea, dock);
При запуске моя программа выглядит так (помните о ранней стадии разработки):
Однако я хочу, чтобы он выглядел следующим образом:
Кажется, я не могу этого добиться. Ссылка Qt на QDockWidget говорит следующее:
В дочернем виджете должны быть реализованы подсказки по размеру, минимальные и максимальные размеры и размер. QDockWidget будет уважать их, корректируя свои собственные ограничения, чтобы включить фрейм и заголовок. Ограничения размера не должны устанавливаться в самом QDockWidget, потому что они изменяются в зависимости от того, закреплена ли она
Теперь это говорит о том, что одним из способов сделать это будет подкласс QTextEdit
и переопределить метод sizeHint()
. Тем не менее, я бы предпочел не делать этого только для этой цели, и я не попробовал, чтобы это было рабочим решением.
Я попытался позвонить dock->resize(m_compilerOutput->width(), m_compilerOutput->minimumHeight())
, вызвав m_compilerOutput->setSizePolicy()
с каждым из его параметров... Ничто до сих пор не повлияло на размер. Как я уже сказал, я предпочел бы простое решение в нескольких строках кода создать отдельный класс, чтобы изменить sizeHint()
. Все предложения приветствуются.