1

我正在尝试在QScrollArea位于QMainWindow.

图形用户界面

我想要一个固定大小的图像显示,如果加载的图像大于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 ,为什么不显示任何滚动条?

4

1 回答 1

0

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

于 2013-12-14T21:35:33.090 回答