我已经成功地在Qt中实现的图像浏览器(用于DICOM)。 我能看到图像,我可以放大和缩小正确。
现在,我想看到滚动条如果图像太大表明,当我放大。
我使用的UI。 我放在QScrollArea。 内饰方面,QLabel。 该verticalScrollBarPolicy是ScrollBarAsNeeded。 该horizontalScrollBarPolicy是ScrollBarAsNeeded。
问题是:这是行不通的。 我放大,但没有出现滚动条。
第二次尝试:使用QScrollArea内的布局。
所以,现在还有的QScrollArea和QLabel之间一个QWidget:水平布局。 打开相同的图像,现在我可以看到右侧的垂直滚动条。 该图像是由左streched向右。 当我缩放图像获取其正确的比例。
但是......我缩小和滚动条是一样的,即使我可以看到整个图像。 从未出现水平滚动条。
调整的QLabel似乎并没有影响。 但是,如果我调整QScrollArea(调整主窗口)出现水平滚动条。
我一直在检查一些数字:
在QScrollArea
- 它的尺寸变化:低于599宽度(为什么这个数字我不能看到它的任何地方?)出现在单杠。
- sizeHint()总是返回相同的值:33x41
在QLabel
- 尺寸的变化,但这并不影响。
- sizeHint()总是返回相同的值:560x1558
这里是从UI设计师XML的代码:
<widget class="QWidget" name="centralWidget">
<property name="autoFillBackground">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="QScrollArea" name="scrollArea">
<property name="widgetResizable">
<bool>true</bool>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>637</width>
<height>649</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="miImagen">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
我在想什么? 谢谢。