элементы позиционирования qt в QMdiSubWindow

У меня есть проблемы с позиционированием элементов управления в производной QMdiSubWindow. Я разработал свое окно с помощью QtDesigner, и оно выглядит так:Vew в QtDesigner

Когда я запускаю приложение, оно выглядит так (кнопка в строке заголовка):
Вид приложения (нормальный mdisubwin)
Это нормально только в режиме максимизации: Вид приложения (mdisubwin развернуто)
Но я бы хотел, чтобы все выглядело нормально.
Вот часть файла .ui:

 <widget class="QPushButton" name="btnToggleEdit">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Edit</string>
</property>
</widget>

Кажется, как будто он отображается относительно угла окна — независимо от строки заголовка окна … Как я могу это исправить?
Я использую Qt 5.2.1 (и надстройку qt для Visual Studio 2010).

1

Решение

Ну, добавление макета не решило проблему. Конечно, с одним все это работает лучше, чем без (масштабирование), но это было не главное. Проблема была в том, что я пропустил один абзац в документе:

Наиболее распространенный способ создания QMdiSubWindow — это вызов
QMdiArea :: addSubWindow () с внутренним виджетом в качестве аргумента. Вы
Вы также можете создать подокно самостоятельно и установить внутренний виджет
Вызов setWidget ().

Мое окно было разделено на подклассы из QMdiSubWindow, но я нигде не вызывал setWidget (). Эту проблему можно решить либо путем вызова этого метода при вызове QMdiArea :: addSubWindow (), либо путем изменения базового класса моего окна на другой, отличный от QMdiSubWindow (например, QWidget)

Итак — как всегда: RTFM 🙂

1

Другие решения

Когда вы помещаете более одного QWidget в форму Qt, вы всегда должны использовать какой-то вид QLayout, самый быстрый способ решить вашу проблему — выбрать все элементы в вашей форме и нажать кнопку макета сетки (тот, который имеет 3 x 3). маленькие квадраты) сверху дизайнерской коробки.

0

По вопросам рекламы [email protected]