Qt Designer错误对齐项目正确配置

时间:2015-04-13 13:29:51

标签: qt user-interface layout alignment qt-designer

我正在尝试在Qt Designer中显示一些项目,但是我无法做到这一点,因为尽管我正确地将它们放在.ui中,当我编译并运行代码时,这些项目都放错了地方:

Left is Qt Designer, Right is what I get

你可以通过上面的图片注意到我想要的是在左侧:QStackedWidget内的四个项目与其他项目完全对齐,但我得到的是正确的部分:QStackedWidget中的所有四个项目是不对齐的。

我试图尽可能地操纵与保证金等相关的变量,但我根本无法理解为什么应用程序显示的内容与编程的不同。关于如何解决这个问题的任何提示?


更新

添加以下图片以帮助评论以下给定答案:

Labels and line edits size fixed


更新

.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>

2 个答案:

答案 0 :(得分:2)

没有理由为什么中间的两排小部件应与外部小部件对齐,因为它们不属于同一布局。

如果底部标签中的文字变长,这应该更加明显:

snapshot from qt designer

所以看起来你的结论是倒退的:它实际上是编译的版本是正确的,而Qt Designer版本需要进一步解释。但是,由于无法测试真实的ui文件,因此很难说更多。

<强>更新

如果将最大/最小尺寸重置为MainWindowleEquipmentIP的默认尺寸,您可以更轻松地查看正在发生的情况。

当水平调整窗口大小时,标签和行编辑之间的间距会以不同的速率变化。因此,窗口的临界宽度将完美对齐线条编辑。对我来说,这个宽度是303像素,但确切的值可能取决于窗口类型,当前窗口小部件样式,当前窗口装饰等。

这可能足以解释为什么Qt Designer有时会以不同的方式显示内容。例如,在我的系统上,我使用Docked Window界面模式,因此表单显示为MDI窗口。这意味着它们可以为顶级窗口(例如Qt Designer本身)提供不同的窗口装饰,因此它们的外部框架尺寸可能略有不同。

答案 1 :(得分:0)

您是否尝试过使用表格布局(有两列,如表格)

<强>更新

我在上下部分使用了表单布局。在中间有堆叠的小部件。 线路输入的右侧正确对齐,左侧也正确对齐。我通过将堆叠小部件的所有边距设置为0并且窗体布局边距已经为0来实现此目的。 此外,我对整个表单使用了垂直布局,这对于将三个布局正确对齐是必要的。 问题是如何在标签结束和行编辑开始之间对齐该部分。我认为如果不破解标签的最小/最大尺寸或左边的任何内容,这是不可能的。

如果可能的话,设计中的一些变化可能比破解不同布局之间的(中间)对齐更好(我认为这是不可能的)。

enter image description here

更新2:

好的,我把你的ui文件放在我的QtCreator测试项目中,结果很好 - 我没有你在更新的截图中显示的线条编辑问题。也许整个窗口有一些残留的大小调整 - 如果你调整窗口大小会发生什么。无论我在做什么,我都无法触发相同的行为 - 行编辑始终正确对齐。

剩下的问题是 - 你的QtCreator版本,Qt版本,操作系统是什么。 我的是QtCreator 3.3.2 Qt 5.4.1 Kubuntu 14.04

enter image description here