繁体   English   中英

Qt:在QScrollArea中显示图像(QLabel)

[英]Qt: display an image (QLabel) inside a QScrollArea

我试图在位于QMainWindow上的QScrollArea显示图像。

GUI

我希望图像的显示尺寸固定,并且如果加载的图像大于QScrollArea出现滚动条。 我的问题是,当我加载大于QScrollArea的图像时,该图像显示为剪切状态(可以),但UI上没有滚动条。

考虑到来自其他stackoverflow问题的各种建议,这是Qt设计器生成的代码:

mImageScrollArea = new QScrollArea(centralWidget);
mImageScrollArea->setObjectName(QString::fromUtf8("mImageScrollArea"));
mImageScrollArea->setGeometry(QRect(440, 0, 400, 700));
mImageScrollArea->setWidgetResizable(false);
scrollAreaWidgetContents = new QWidget();
scrollAreaWidgetContents->setObjectName(QString::fromUtf8("scrollAreaWidgetContents"));
scrollAreaWidgetContents->setGeometry(QRect(0, 0, 398, 698));
mLabel = new QLabel(scrollAreaWidgetContents);
mLabel->setObjectName(QString::fromUtf8("mLabel"));
mLabel->setGeometry(QRect(0, 0, 400, 700));
QSizePolicy sizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(mLabel->sizePolicy().hasHeightForWidth());
mLabel->setSizePolicy(sizePolicy);
mLabel->setScaledContents(true);
mImageScrollArea->setWidget(scrollAreaWidgetContents);

加载图像后,我将其显示在标签中,如下所示:

QPixmap wPixmap = QPixmap::fromImage(mImage);


ui.mLabel->resize(wPixmap.size());
ui.mLabel->setPixmap(wPixmap);

ui.mLabel->show();

如果我加载的图像比QScrollArea大,为什么没有滚动条显示?

如果提供UI文件内容而不是生成的C ++代码,则将更加有用。 无论如何,似乎scrollAreaWidgetContents没有布局。 您需要在Qt Designer中向其添加网格布局。 完成此操作后,您将不需要手动调整label或scrollAreaWidgetContents大小。 它们将自动调整大小。 也不要求在标签上调用show ,默认情况下它将可见(除非您已将其隐藏)。

暂无
暂无

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

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