C++ 在工具栏中心拉伸(stretch) QLineEdit

标签 c++ qt qtoolbar

我放置了四个 QToolBars:

addToolBar(new BarLeft());
addToolBar(new SearchBar());
addToolBar(new BarRight());
addToolBarBreak();
addToolBar(new BottomBar());

左侧栏上有几个图标。右边的也有几个图标。中心栏包含一个文本字段,我想在其他两个工具栏之间拉伸(stretch) 100%。 QT 会自动将最后一个工具栏拉伸(stretch)到空白区域,除非您另有说明。我发现结果告诉我执行以下操作,但没有奏效。

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

最佳答案

要使同一布局中的一个小部件比其他小部件变得更大,您需要 horizontal stretch

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

关于C++ 在工具栏中心拉伸(stretch) QLineEdit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21807408/

相关文章:

c++ - 不允许成员函数重新声明

c++ - 开源或低成本的跨平台视频编解码库,可商用,支持RGBA格式

c++ - 如何在其他两个之间设置工具栏

python - 在 PySide 主窗口左侧添加工具栏

qt - 主窗口中的垂直 QToolBar

java - 如何将以下 C++ 语句转换为 Java?

c++ - 使用并行数组的初学者编程学生

c++ - 添加 resources.rc 文件信息项目

c++ - Qt/C++中创建虚拟串口

c++ - QAbstractItemModel 对索引/父函数和数据函数感到困惑