简体   繁体   English

scrollarea中的滚动条不起作用

[英]scrollbars in scrollarea doesn't work

I've got stuck in this problem and try almost all other similar problems, but none of them doesn't work, any help appreciate it. 我陷入了这个问题,并尝试了几乎所有其他类似的问题,但是没有一个是行不通的,任何帮助都可以解决。

Problem, i have a custom widget, in my custom widget i have a QScrollArea and inside QScrollArea i have a Qlabal that inherit from a subclass from Qlable. 问题,我有一个自定义窗口小部件,在我的自定义窗口小部件中,我有一个QScrollArea,在QScrollArea内部,我有一个Qlabal,它继承自Qlable的子类。

Now when i load image, because setscalecontent is true, the image is fitted to lable, but i have a button for changing image to normal size or first size, and for it i use from adjustsize, the image returns to first size but the scrollbars are not loaded, also widgetresizable is true, 现在,当我加载图像时,因为setscalecontent为true,所以图像适合了lable,但是我有一个按钮可以将图像更改为正常尺寸或第一个尺寸,为此我使用了Adjustsize,图像返回了第一个尺寸,但滚动条没有加载,widgetresizable也是如此,

setupui for my widget: 我的小部件的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

I found a way to solve this problem. 我找到了解决此问题的方法。 by changing sizepolicy in each state, i got what i want. 通过更改每个州的sizepolicy,我得到了我想要的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM