如何从 Qt Creator 的 UI 设计器中的其他两个布局之间删除 Qt 布局?
Posted
技术标签:
【中文标题】如何从 Qt Creator 的 UI 设计器中的其他两个布局之间删除 Qt 布局?【英文标题】:How to remove Qt layout from between two other layouts in Qt Creator's UI designer? 【发布时间】:2019-05-23 20:56:38 【问题描述】:我的 Qt 表单中有以下结构:
我怎样才能完全删除VerticalLayout_1
,使gridLayout_8
成为page_4
的直接子级和唯一子级?
我尝试从右键菜单中选择删除,但这也会删除VerticalLayout_1
的子项。我还尝试在拖放界面中移动gridLayout_8
,但由于它是verticalLayout_1
的唯一子项,我无法将其移动到page_4.
【问题讨论】:
您是否尝试在树视图中移动它(屏幕截图中的那个)? @Mike Afaik 树视图不支持拖放移动对象。至少我还没想出办法。 【参考方案1】:一种可能的方法是手动编辑.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>
的<item>
的直接子级,即:
...
<layout class="QGridLayout" name="page_4">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_8">
...
</layout>
</item>
</layout>
...
之后,您可以在 QtCreator 中重新打开 XML 文件,以确保一切正常。
我不确定是否有更简单的方法可以从 QtCreator 获得相同的结果。如果您知道,请随时添加答案。
【讨论】:
谢谢!这很容易做到,尽管我希望它可以直接从 UI 编辑器中完成。【参考方案2】:选择起来可能很棘手,但在表单中,您应该能够选择 gridLayout_8 作为一个单元并将其拖到 page_4 布局中。这将使verticalLayout_1 仍然存在,但为空,然后您可以轻松将其删除。如果 gridLayout_8 布局的边距为零,则可能无法选择;您必须将边距设置为某个值,以便 gridLayout_8 的边框与 verticalLayout_1 的边框分开。
我一直在拖动布局。困难的部分是确保选择布局而不是其中的某些内容。如果你掉错地方或抓错东西,请准备好撤消并重试。
【讨论】:
是的,我试过这样做,但这只是一个巨大的痛苦,我希望有更好的方法。 如果您可以在这种情况下在树中拖放,那就太好了,但我不相信还有其他方法。以上是关于如何从 Qt Creator 的 UI 设计器中的其他两个布局之间删除 Qt 布局?的主要内容,如果未能解决你的问题,请参考以下文章
在qt creator中用ui设计器创建了一个QDialog的窗口,添加了一个QWidget部件,怎么能在Qwidget上用QPainter