qt — C ++ Растяжение QLineEdit по центру панели инструментов

Я четыре 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 ничего не отображает справа от правой панели, которую я дал фиксированной ширине. Результат точно такой же, если я переверну политику, чтобы editor->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Expanding);или если я пропущу вызов функции ввода.

Для наглядного представления о том, что я хочу сделать, просто взгляните на Google Chrome, который имеет очень похожий интерфейс:

[ Icon ] [ Icon ] [ ================ Text Field =============== ] [ Icon ] [ Icon ]

Моя версия Qt 5.2.1

2

Решение

Чтобы один виджет стал больше других в том же макете, вам нужно горизонтальное растяжение

editor = new QLineEdit();
QSizePolicy sp = editor->sizePolicy();
sp.setHorizontalStretch(1);
editor->setSizePolicy(sp);
addWidget(editor);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]