最大尺寸的小部件不遵循AlignHCenter

时间:2012-11-13 18:54:33

标签: qt qt4

我有一个带有标签和QGraphicsView的垂直布局。我已经设置了QGraphicsView的最大大小,并将水平对齐设置为AlignHCenter,但它似乎仍然出现在左侧而不是出现?这是一个demo ui文件:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Form</class>
 <widget class="QWidget" name="Form">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QLabel" name="label">
     <property name="text">
      <string>TextLabel</string>
     </property>
     <property name="alignment">
      <set>Qt::AlignCenter</set>
     </property>
    </widget>
   </item>
   <item>
    <widget class="QGraphicsView" name="graphicsView">
     <property name="sizePolicy">
      <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
       <horstretch>0</horstretch>
       <verstretch>0</verstretch>
      </sizepolicy>
     </property>
     <property name="maximumSize">
      <size>
       <width>100</width>
       <height>100</height>
      </size>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>

如果我改变标签的水平对齐方式,它的行为与我期望的一样(左移向左移动,AlignHCenter将其移动到中心),但QGraphicsView不遵循该行为 - 它始终在左

我如何将这个固定大小的QGraphicsView集中在一起?

1 个答案:

答案 0 :(得分:1)

如果您将QGraphicsView包装在QHBoxLayout中,如图所示,它将显示为您所期望的居中。如果要将水平间隔对齐到任何一侧,可以在左侧或右侧插入水平间隔。

当QGraphicsView有一个滚动条时,alignment property控制它的行为,而不是它在QLayout中的相对位置。

   <item>
    <layout class="QHBoxLayout" name="horizontalLayout">
     <item>
      <widget class="QGraphicsView" name="graphicsView">
       <property name="sizePolicy">
        <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
         <horstretch>0</horstretch>
         <verstretch>0</verstretch>
        </sizepolicy>
       </property>
       <property name="maximumSize">
        <size>
         <width>100</width>
         <height>100</height>
        </size>
       </property>
      </widget>
     </item>
    </layout>
   </item>