2015-01-13 5 views
1

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

Когда я запустить приложение это выглядит следующим образом (кнопка на панели заголовка): View of the app (mdisubwin normal) Он получает нормально только в развернутом режиме: View of the app (mdisubwin maximized) Но я хотелось бы, чтобы он всегда выглядел нормально. Вот часть .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).

+0

Вы должны использовать макеты Qt. – vahancho

ответ

1

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

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

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

Так что - как всегда: RTFM :)

0

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