我已经在 Qt 中成功实现了图像查看器(适用于 DICOM)。
我可以看到图像,并且可以正确放大和缩小。
现在,如果图像太大而无法在放大时显示,我想看到滚动条。
我用过用户界面。我放置了一个Q滚动区域。在 - 的里面QLabel.
The 垂直滚动条策略 is 按需滚动条.
The 水平滚动条策略 is 按需滚动条.
问题是:它不起作用。我放大,但没有出现滚动条。
第二次尝试:使用 QScrollArea 内的布局。
所以现在有一个QWidgetQScrollArea 和 QLabel 之间:水平布局。
打开同一张图像,现在我可以看到右侧有一个垂直滚动条。图像从左向右拉伸。当我缩放图像时,图像会获得正确的比例。
但是......我缩小并且滚动条是相同的,即使我可以看到整个图像。水平滚动条永远不会出现。
调整 QLabel 的大小似乎没有影响。但是,如果我调整 QScrollArea 的大小(调整主窗口的大小),则会出现水平滚动条。
我一直在检查一些数字:
在 QScrollArea 中
- 它的大小发生变化:低于 599 宽度(为什么是这个数字?我在任何地方都看不到它)出现水平条。
-
大小提示()始终返回相同的值:33x41
在 Q 标签中
- 尺寸发生变化,但这并不影响。
-
大小提示()始终返回相同的值: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>
我缺少什么?谢谢。
我知道这是一篇旧帖子 - 但如果您或任何人仍然遇到问题,它可能会有所帮助QScrollArea::widgetResizable
为假。
至少,当我尝试类似的事情时,我的垂直滚动条始终被禁用(即使我将可滚动小部件的大小设置为具有大于视口的高度),直到我将其设置为 false。
当这是真的时,我认为它会更新可滚动小部件的大小,因此不需要滚动条。这允许您执行我猜的示例中的操作,并实现拉伸以适应功能。 (实际上我想做的是适应宽度,只有一个垂直滚动条)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)