2015-04-13 2 views
1

Я пытаюсь отобразить некоторые элементы в Qt Designer, но я не могу это сделать, потому что, несмотря на то, что я правильно размещаю их в .ui, когда я компилирую и запускаю код, пункты неуместны:Qt Designer неправильно сориентированные элементы правильно настроены

Left is Qt Designer, Right is what I get

Вы можете заметить вышеупомянутые, что образами, что я хочу, в левой части: четыре детали внутри QStackedWidget идеально выровнена с другими предметами, но то, что я получаю то, что в правая часть: все четыре элемента внутри QStackedWidget смещены.

Я старался как можно больше манипулировать переменными, связанными с полями и т. Д., Но я просто не могу понять, почему приложение показывает что-то отличное от того, что было запрограммировано. Любой совет о том, как решить эту проблему?


UPDATE

Добавление следующее изображение, чтобы помочь в комментариях данного ответа ниже:

Labels and line edits size fixed


UPDATE

.ui-файл:

<?xml version="1.0" encoding="UTF-8"?> 
<ui version="4.0"> 
<class>MainWindow</class> 
<widget class="QMainWindow" name="MainWindow"> 
    <property name="geometry"> 
    <rect> 
    <x>0</x> 
    <y>0</y> 
    <width>306</width> 
    <height>229</height> 
    </rect> 
    </property> 
    <property name="minimumSize"> 
    <size> 
    <width>306</width> 
    <height>0</height> 
    </size> 
    </property> 
    <property name="maximumSize"> 
    <size> 
    <width>306</width> 
    <height>229</height> 
    </size> 
    </property> 
    <property name="windowTitle"> 
    <string>MainWindow</string> 
    </property> 
    <widget class="QWidget" name="centralWidget"> 
    <layout class="QGridLayout" name="gridLayout_4"> 
    <item row="3" column="1"> 
    <widget class="QPushButton" name="pbUpdate"> 
     <property name="text"> 
     <string>Update</string> 
     </property> 
    </widget> 
    </item> 
    <item row="3" column="0"> 
    <spacer name="horizontalSpacer_2"> 
     <property name="orientation"> 
     <enum>Qt::Horizontal</enum> 
     </property> 
     <property name="sizeHint" stdset="0"> 
     <size> 
     <width>40</width> 
     <height>20</height> 
     </size> 
     </property> 
    </spacer> 
    </item> 
    <item row="3" column="2"> 
    <spacer name="horizontalSpacer_3"> 
     <property name="orientation"> 
     <enum>Qt::Horizontal</enum> 
     </property> 
     <property name="sizeHint" stdset="0"> 
     <size> 
     <width>40</width> 
     <height>20</height> 
     </size> 
     </property> 
    </spacer> 
    </item> 
    <item row="0" column="0" colspan="3"> 
    <layout class="QHBoxLayout" name="horizontalLayout"> 
     <item> 
     <widget class="QPushButton" name="pbFullUpdate"> 
     <property name="text"> 
     <string>Full update</string> 
     </property> 
     </widget> 
     </item> 
     <item> 
     <widget class="QPushButton" name="pbSingleFile"> 
     <property name="text"> 
     <string>Single file</string> 
     </property> 
     </widget> 
     </item> 
     <item> 
     <spacer name="horizontalSpacer"> 
     <property name="orientation"> 
     <enum>Qt::Horizontal</enum> 
     </property> 
     <property name="sizeHint" stdset="0"> 
     <size> 
      <width>89</width> 
      <height>17</height> 
     </size> 
     </property> 
     </spacer> 
     </item> 
    </layout> 
    </item> 
    <item row="1" column="0" colspan="3"> 
    <widget class="QStackedWidget" name="swInfo"> 
     <property name="currentIndex"> 
     <number>1</number> 
     </property> 
     <widget class="QWidget" name="page"> 
     <layout class="QGridLayout" name="gridLayout_3"> 
     <property name="leftMargin"> 
     <number>0</number> 
     </property> 
     <property name="topMargin"> 
     <number>0</number> 
     </property> 
     <property name="rightMargin"> 
     <number>0</number> 
     </property> 
     <item row="0" column="0"> 
     <widget class="QLabel" name="label_3"> 
      <property name="text"> 
      <string>Version ID:</string> 
      </property> 
     </widget> 
     </item> 
     <item row="0" column="2"> 
     <layout class="QGridLayout" name="gridLayout"> 
      <item row="0" column="0"> 
      <widget class="QPushButton" name="pbVersionIDIncrease1"> 
      <property name="maximumSize"> 
      <size> 
       <width>31</width> 
       <height>31</height> 
      </size> 
      </property> 
      <property name="text"> 
      <string>^</string> 
      </property> 
      </widget> 
      </item> 
      <item row="0" column="1"> 
      <widget class="QPushButton" name="pbVersionIDIncrease2"> 
      <property name="maximumSize"> 
      <size> 
       <width>31</width> 
       <height>31</height> 
      </size> 
      </property> 
      <property name="text"> 
      <string>^</string> 
      </property> 
      </widget> 
      </item> 
      <item row="0" column="2"> 
      <widget class="QPushButton" name="pbVersionIDIncrease3"> 
      <property name="maximumSize"> 
      <size> 
       <width>31</width> 
       <height>31</height> 
      </size> 
      </property> 
      <property name="text"> 
      <string>^</string> 
      </property> 
      </widget> 
      </item> 
     </layout> 
     </item> 
     <item row="0" column="1"> 
     <widget class="QLineEdit" name="leID"> 
      <property name="text"> 
      <string>33.4550.1</string> 
      </property> 
     </widget> 
     </item> 
     <item row="1" column="0" colspan="3"> 
     <spacer name="verticalSpacer"> 
      <property name="orientation"> 
      <enum>Qt::Vertical</enum> 
      </property> 
      <property name="sizeHint" stdset="0"> 
      <size> 
      <width>20</width> 
      <height>40</height> 
      </size> 
      </property> 
     </spacer> 
     </item> 
     </layout> 
     </widget> 
     <widget class="QWidget" name="page_2"> 
     <layout class="QGridLayout" name="gridLayout_2"> 
     <property name="sizeConstraint"> 
     <enum>QLayout::SetDefaultConstraint</enum> 
     </property> 
     <property name="leftMargin"> 
     <number>0</number> 
     </property> 
     <property name="topMargin"> 
     <number>0</number> 
     </property> 
     <property name="rightMargin"> 
     <number>0</number> 
     </property> 
     <property name="bottomMargin"> 
     <number>0</number> 
     </property> 
     <item row="0" column="1"> 
     <widget class="QLineEdit" name="leServerAddress"> 
      <property name="minimumSize"> 
      <size> 
      <width>186</width> 
      <height>0</height> 
      </size> 
      </property> 
      <property name="maximumSize"> 
      <size> 
      <width>186</width> 
      <height>16777215</height> 
      </size> 
      </property> 
      <property name="text"> 
      <string/> 
      </property> 
     </widget> 
     </item> 
     <item row="0" column="0"> 
     <widget class="QLabel" name="label_2"> 
      <property name="styleSheet"> 
      <string notr="true"/> 
      </property> 
      <property name="text"> 
      <string>Server path:</string> 
      </property> 
      <property name="buddy"> 
      <cstring>leServerAddress</cstring> 
      </property> 
     </widget> 
     </item> 
     <item row="1" column="1"> 
     <widget class="QLineEdit" name="lePathToSave"> 
      <property name="minimumSize"> 
      <size> 
      <width>186</width> 
      <height>0</height> 
      </size> 
      </property> 
      <property name="maximumSize"> 
      <size> 
      <width>186</width> 
      <height>16777215</height> 
      </size> 
      </property> 
      <property name="text"> 
      <string>/mmcblk0p2/</string> 
      </property> 
     </widget> 
     </item> 
     <item row="1" column="0"> 
     <widget class="QLabel" name="label_4"> 
      <property name="text"> 
      <string>Path to save:</string> 
      </property> 
     </widget> 
     </item> 
     </layout> 
     </widget> 
    </widget> 
    </item> 
    <item row="2" column="0"> 
    <widget class="QLabel" name="label"> 
     <property name="styleSheet"> 
     <string notr="true"/> 
     </property> 
     <property name="text"> 
     <string>Equipment IP:</string> 
     </property> 
     <property name="buddy"> 
     <cstring>leEquipmentIP</cstring> 
     </property> 
    </widget> 
    </item> 
    <item row="2" column="1" colspan="2"> 
    <widget class="QLineEdit" name="leEquipmentIP"> 
     <property name="minimumSize"> 
     <size> 
     <width>186</width> 
     <height>33</height> 
     </size> 
     </property> 
     <property name="maximumSize"> 
     <size> 
     <width>186</width> 
     <height>33</height> 
     </size> 
     </property> 
     <property name="text"> 
     <string>10.1.25.10</string> 
     </property> 
    </widget> 
    </item> 
    </layout> 
    </widget> 
    <widget class="QStatusBar" name="statusBar"/> 
    <action name="actionExit"> 
    <property name="text"> 
    <string>Exit</string> 
    </property> 
    </action> 
</widget> 
<layoutdefault spacing="6" margin="11"/> 
<tabstops> 
    <tabstop>leEquipmentIP</tabstop> 
    <tabstop>pbUpdate</tabstop> 
</tabstops> 
<resources/> 
<connections/> 
</ui> 
+0

Хорошо, я решил проблему, поставив горизонтальную прокладку между метками и QLineEdits (странно, что я помню, как это решение было принято до этого без успеха). В любом случае, это не отвечает на мой вопрос о том, почему это происходит. – Momergil

+0

Я забыл спросить - какие макеты вы используете внутри сложного виджета для страниц? В моем ответе его макет формы (в картинке для элемента «страница») – nayana

ответ

0

Вы пробовали использовать форму Layout (имеющие два столбца, как в форме)

Update:

Я использовал макеты форм для выше и ниже части , В середине есть сложный виджет. Правая сторона линейных входов правильно выровнена, а также левая сторона также правильно выровнена. Я достиг этого, установив все поля уложенного виджета на 0, а поля макетов форм уже были на 0. Также я использовал вертикальную компоновку для всей формы, это было необходимо для правильного выравнивания трех макетов вместе. Проблема заключается в том, как выровнять эту часть между концом меток и началом редактирования строки. Я думаю, что это невозможно без взлома минимального/максимального размера ярлыков или всего, что находится слева.

Возможно, некоторые изменения в дизайне были бы лучше, чем взломать (среднее) выравнивание между различными макетами (что, я думаю, невозможно).

enter image description here

Update 2:

Ok я взял файл пользовательского интерфейса, помещенный в моем тестовом проекте QtCreator и результат хороший - у меня нет проблемы croped линии редактирует, как вы показываете в вашем Обновлен скриншот. Возможно, существует некоторое остаточное изменение размера всего окна - что произойдет, если вы измените размер окна. Независимо от того, что я делаю, я не могу запускать одно и то же поведение - редактирование строк правильно выравнивается все время.

Остальные вопросы - какова ваша версия QtCreator, версия Qt, ОС. Шахта QtCreator 3.3.2 Qt 5.4.1 Kubuntu 14.04

enter image description here

+0

Ну, на самом деле, в вашем примере вы упустили позицию StackedWidget: не все виджеты внутри него, а только «путь к серверу» и «путь к сохранению» "и двух соответствующих QLineEdits. Если я поместил все виджеты внутри QStackedWidget, тогда он будет работать отлично, как на ваших изображениях. (обратите внимание на положение двух стрелок в левой части моего изображения) – Momergil

+0

О, извините, я не читал вопрос правильно. Возможно, вы можете разместить другой материал в других уложенных виджетах, чтобы получить одинаковое выравнивание, я попробую обновить мой ответ – nayana

+0

Я обновил ответ. Я согласен с ekhumoro .. Я думаю, что сказал то же самое (я не заметил этого ответа, когда я обновил этот). – nayana

2

Там нет причин, почему два ряда виджетов в середине должна выстраиваться с наружных, учитывая, что они не являются частью одного и того же макета.

Это должно быть более очевидным, если текст в нижней звукозаписывающей компанией удлинен:

snapshot from qt designer

Так что, кажется, ваш вывод в обратном направлении: это на самом деле скомпилирован версия, что это правильно, и Qt Designer, которая нуждается в дополнительном объяснении. Но, не имея возможности проверить реальный файл ui, трудно сказать гораздо больше.

UPDATE:

Если максимальный/минимальный размер сбрасывается в значение по умолчанию для MainWindow и leEquipmentIP, вы можете легко увидеть, что происходит.

Когда окно изменяется горизонтально, расстояние между метками и изменениями строк изменяется с разной скоростью. Таким образом, для окна есть критическая ширина, где редактирование строк будет идеально выровнено. Для меня эта ширина составляет 303 пикселя, но точное значение может зависеть от таких вещей, как тип окна, текущий стиль виджета, текущее оформление окна и т. Д.

Это, вероятно, достаточно, чтобы объяснить, почему Qt Designer может иногда отображать вещи по-разному , Например, в моей системе я использую режим интерфейса Docked Window, и поэтому формы отображаются как окна MDI. Это означает, что они получают другое оформление окна для окон верхнего уровня (например, самого Qt Designer), поэтому их внешние размеры рамки могут быть немного разными.

+0

хорошо, это интересное замечание, хотя он все еще оставляет открытым вопрос о том, почему запущенное приложение показано другим, чем то, что помещено в файл .ui (IOW вообще я бы согласился с тем, что вы заметили, но я не понимаю, почему скомпилированная версия будет выглядеть иначе, чем то, что находится в .ui, как только он должен поддерживать AFAIK, что было запрограммировано там и там, оно выровнено). – Momergil

+0

@Momergil. Единственная причина, по которой вопрос открыт, - это то, что вы все еще не опубликовали фактический файл ui. Я вижу из одного из ваших других комментариев, которые используют фиксированные размеры для некоторых виджетов. Это такие детали, которые могут иметь значение. – ekhumoro

+1

по какой-то причине я забыл, что мог бы ctrl + c/ctrl + v код .ui вместо файла ^^ Я обновил вопрос. Спасибо за ваше время. – Momergil

Смежные вопросы