0

我有一个带有标签和 QGraphicsView 的垂直布局。我已经设置了 QGraphicsView 的最大尺寸,并将水平对齐设置为 AlignHCenter,但它似乎仍然出现在左侧而不是居中?这是一个演示 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>

如果我更改标签的水平对齐方式,它的行为与我预期的一样(Left 将其移至左侧,而 AlignHCenter 将其移至中心),但 QGraphicsView 不遵循该行为 - 它始终位于左侧。

我如何将这个固定大小的 QGraphicsView 居中?

4

1 回答 1

1

如果您将 QGraphicsView 包装在 QHBoxLayout 中,如图所示,那么它将像您期望的那样居中显示。如果您希望它与任一侧对齐,您可以在左侧或右侧插入一个水平垫片。

当QGraphicsView 有滚动条时,alignment 属性控制它的行为,而不是它在 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>
于 2012-11-13T21:05:08.360 回答