0

我陷入了这个问题并尝试了几乎所有其他类似的问题,但没有一个不起作用,任何帮助表示赞赏。

问题,我有一个自定义小部件,在我的自定义小部件中我有一个 QScrollArea 并且在 QScrollArea 内我有一个 Qlabal,它继承自 Qlable 的子类。

现在当我加载图像时,因为 setscalecontent 为真,图像适合标签,但我有一个用于将图像更改为正常大小或第一个大小的按钮,并且我使用调整大小,图像返回到第一个大小,但滚动条没有加载,widgetresizable 也是 true,

我的小部件的 setupui:

   void setupUi(QWidget *widget_img_2d)
{
    if (widget_img_2d->objectName().isEmpty())
        widget_img_2d->setObjectName(QString::fromUtf8("widget_img_2d"));
    widget_img_2d->resize(569, 379);
    gridLayout = new QGridLayout(widget_img_2d);
    gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
    scrollArea = new QScrollArea(widget_img_2d);
    scrollArea->setObjectName(QString::fromUtf8("scrollArea"));
    scrollArea->setWidgetResizable(true);
    scrollArea->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter);
    scrollAreaWidgetContents = new QWidget();
    scrollAreaWidgetContents->setObjectName(QString::fromUtf8("scrollAreaWidgetContents"));
    scrollAreaWidgetContents->setGeometry(QRect(0, 0, 549, 359));
    QSizePolicy sizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
    sizePolicy.setHorizontalStretch(0);
    sizePolicy.setVerticalStretch(0);
    sizePolicy.setHeightForWidth(scrollAreaWidgetContents->sizePolicy().hasHeightForWidth());
    scrollAreaWidgetContents->setSizePolicy(sizePolicy);
    gridLayout_2 = new QGridLayout(scrollAreaWidgetContents);
    gridLayout_2->setObjectName(QString::fromUtf8("gridLayout_2"));
    lbl_img = new my_qlable(scrollAreaWidgetContents);
    lbl_img->setObjectName(QString::fromUtf8("lbl_img"));
    sizePolicy.setHeightForWidth(lbl_img->sizePolicy().hasHeightForWidth());
    lbl_img->setSizePolicy(sizePolicy);
    lbl_img->setAutoFillBackground(false);
    lbl_img->setScaledContents(true);

    gridLayout_2->addWidget(lbl_img, 0, 0, 1, 1);

    scrollArea->setWidget(scrollAreaWidgetContents);

    gridLayout->addWidget(scrollArea, 0, 0, 1, 1);


    retranslateUi(widget_img_2d);

    QMetaObject::connectSlotsByName(widget_img_2d);
} // setupUi
4

1 回答 1

0

我找到了解决这个问题的方法。通过更改每个州的 sizepolicy,我得到了我想要的。

于 2014-05-07T15:15:02.470 回答