我有一个带有标签和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集中在一起?
答案 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>