2

我放置了四个 QToolBar:

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);如果我将策略翻转为 be ,或者我省略了 enter 函数调用,结果是完全相同的。

为了直观地了解我想要做什么,只需看看 google chrome,它的界面非常相似:

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

我的 Qt 版本是 5.2.1

4

1 回答 1

1

要使同一布局中的一个小部件变得比其他小部件大,您需要水平拉伸

editor = new QLineEdit();
QSizePolicy sp = editor->sizePolicy();
sp.setHorizontalStretch(1);
editor->setSizePolicy(sp);
addWidget(editor);
于 2014-02-16T09:51:55.820 回答