Я четыре QToolBars, которые размещены как таковые:
addToolBar(new BarLeft());
addToolBar(new SearchBar());
addToolBar(new BarRight());
addToolBarBreak();
addToolBar(new BottomBar());
На левой панели есть несколько значков. На правом также есть несколько значков. Центральная панель содержит текстовое поле, которое я хочу растянуть на 100% между двумя другими панелями инструментов. QT автоматически растянет самую последнюю панель инструментов по пустому пространству, если вы не укажете иначе. Я нашел результаты, говорящие мне сделать следующее, но это не сработало.
SearchBar::SearchBar() {
setMovable(false);
editor = new QLineEdit();
editor->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred);
addWidget(editor);
}
В результате поле заполняется по вертикали, но Qt ничего не отображает справа от RightBar, которому я задал фиксированную ширину. Результат будет точно таким же, если я переверну политики на editor->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Expanding);
или если я пропущу вызов функции ввода.
Для визуального понимания того, что я хочу сделать, просто взгляните на Google Chrome, который имеет очень похожий интерфейс:
[ Icon ] [ Icon ] [ ================ Text Field =============== ] [ Icon ] [ Icon ]
Моя версия Qt 5.2.1