Я успешно реализовал средство просмотра изображений (для DICOM) в Qt. Я вижу изображение и могу правильно увеличивать и уменьшать масштаб.
Теперь я хочу видеть полосы прокрутки, если изображение слишком велико для отображения при увеличении.
Я использовал пользовательский интерфейс. Я разместил QScrollArea.Внутри QLabel. verticalScrollBarPolicyравно ScrollBarAsNeeded. horizontalScrollBarPolicy— это ScrollBarAsNeeded.
Проблема в том, что это не работает. Я увеличиваю масштаб, но полоса прокрутки не появляется.
Итак, теперь есть QWidgetмежду QScrollArea и QLabel: горизонтальное расположение. Открыл то же изображение, теперь вижу вертикальную полосу прокрутки справа. Изображение растянуто слева направо. Когда я масштабирую, изображение получает правильную пропорцию.
НО... Я уменьшаю масштаб, и полоса прокрутки остается прежней, даже если я вижу все изображение. Горизонтальная полоса прокрутки никогда не появляется.
Изменение размера QLabel, похоже, не влияет. Но если я изменю размер QScrollArea (изменив размер главного окна), появится горизонтальная полоса прокрутки.
Вот код в формате 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>
Что я упустил? Спасибо.