Как удалить разметку Qt между двумя другими разметками в конструкторе пользовательского интерфейса Qt Creator? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть следующая структура в моей форме Qt:

UI Structure

Как я могу полностью удалить VerticalLayout_1, чтобы gridLayout_8 стал непосредственным и единственным потомком page_4?

Я попытался выбрать удаление в меню правой кнопки мыши, но это также удаляет дочерние элементы VerticalLayout_1. Я также попытался переместить gridLayout_8 в интерфейсе перетаскивания, но так как он был единственным потомком verticalLayout_1, я просто не смог переместить его в page_4.

Ответы [ 2 ]

1 голос
/ 24 мая 2019

Это может быть сложно выбрать, но в форме вы должны были бы выбрать gridLayout_8 как единое целое и перетащить его в макет page_4. Это оставило бы verticalLayout_1 все еще присутствующим, но пустым, и тогда вы можете легко удалить его. Если макет gridLayout_8 имеет нулевые поля, выбор может быть невозможен; вам нужно было бы установить поля так, чтобы граница gridLayout_8 была отделена от границы verticalLayout_1.

Я все время перетаскиваю макеты. Сложнее всего убедиться, что выбран макет, а не что-то внутри него. Просто будьте готовы отменить и попробуйте снова, если вы упали в неправильном месте или захватите не ту вещь.

1 голос
/ 24 мая 2019

Один из возможных способов - отредактировать XML-файл .ui вручную, чтобы удалить ненужный макет. Если вы откроете свой 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>
...

После этого вы можете снова открыть файл XML в QtCreator, чтобы убедиться, что все выглядит так, как должно.

Я не уверен, есть ли более простой способ добиться того же результата от QtCreator. Если вы знаете что-либо, не стесняйтесь добавлять ответ.

...