gpt4 book ai didi

image - QLabel 在 QScrollArea 内显示图像

转载 作者:行者123 更新时间:2023-12-04 15:02:09 27 4
gpt4 key购买 nike

我已经在 Qt 中成功实现了一个图像查看器(用于 DICOM)。
我可以看到图像,并且可以正确放大和缩小。

现在,如果图像太大而无法在放大时显示,我想查看滚动条。

我用过用户界面。我放了一个 QScrollArea .在里面, QLabel .
verticalScrollBarPolicy 是 ScrollBarAsNeeded。
Horizo​​ntalScrollBarPolicy 是 ScrollBarAsNeeded。

问题是:它不起作用。我放大,但没有出现滚动条。

第二次尝试:使用 QScrollArea 内的布局。

所以现在有一个 QWidget QScrollArea 和 QLabel 之间:水平布局。
打开相同的图像,现在我可以在右侧看到一个垂直滚动条。图像从左到右拉伸(stretch)。当我缩放图像时,它的比例是正确的。

但是...我缩小了滚动条,即使我可以看到整个图像。水平滚动条永远不会出现。

调整 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>

    我错过了什么?谢谢你。

    最佳答案

    我知道这是一篇旧帖子 - 但如果您或任何人仍有问题,设置 QScrollArea::widgetResizable 可能会有所帮助为假。

    至少,当我尝试类似的事情时,我的垂直滚动条总是被禁用(即使我将可滚动小部件的大小设置为大于视口(viewport)的高度),直到我将其设置为 false。

    如果是真的,我认为它会更新可滚动小部件的大小,因此不需要滚动条。这使您可以执行我猜想的示例中的操作,并实现拉伸(stretch)以适应功能。 (实际上我想要做的是适合宽度,只有一个垂直滚动条)

    关于image - QLabel 在 QScrollArea 内显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10981662/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com