如何从 Qt Creator 的 UI 设计器中的其他两个布局之间删除 Qt 布局?

How to remove Qt layout from between two other layouts in Qt Creator's UI designer?

我的 Qt 表单中有以下结构:

我怎样才能完全删除VerticalLayout_1,使gridLayout_8成为page_4的直接且仅child?

我尝试从右键单击菜单中选择删除,但这也删除了 VerticalLayout_1 的 child。我也尝试在拖放界面中移动 gridLayout_8,但由于它是 verticalLayout_1 中唯一的 child,我无法将其移动到 page_4.

一种可能的方法是手动编辑 .ui XML 文件以删除不需要的布局。如果你在编辑器中打开你的 XML 文件,你应该会找到类似这样的东西:

...
<layout class="QGridLayout" name="page_4">
 <item row="0" column="0">
  <!-- below is the layout you want to remove -->
  <layout class="QVBoxLayout" name="verticalLayout_1">
   <item>
    <layout class="QGridLayout" name="gridLayout_8">
      ...
    </layout>
   </item>
  </layout>
 </item>
</layout>
...

在您的情况下,您只需删除 <layout> 标签及其 <item> 子标签,这样 gridLayout_8 就成为 <item> 标签的直接子标签page_4,即:

...
<layout class="QGridLayout" name="page_4">
 <item row="0" column="0">
  <layout class="QGridLayout" name="gridLayout_8">
      ...
  </layout>
 </item>
</layout>
...

之后,您可以 re-open QtCreator 中的 XML 文件,以确保一切看起来都符合预期。

我不确定是否有更简单的方法可以从 QtCreator 获得相同的结果。如果您知道任何,请随时添加答案。

select 可能很棘手,但在表格中,您应该能够 select 将 gridLayout_8 作为一个单元并将其拖入 [=15] =] 布局。这将使 verticalLayout_1 仍然存在,但为空,然后您可以轻松删除它。如果 gridLayout_8 布局的边距为零,则可能无法 select;您必须将边距设置为某种值,以便 gridLayout_8 的边框与 verticalLayout_1.

的边框分开

我一直在拖拽布局。困难的部分是确保布局是 selected 而不是其中的东西。如果您掉错地方或抓错东西,请准备好撤消并重试。