Я пытаюсь отобразить изображение внутри QScrollArea
, расположенное на QMainWindow
.Qt: отображение изображения (QLabel) внутри QScrollArea
Я хочу фиксированный размер для отображения изображения и полосы прокрутки появляются, если загруженное изображение больше, чем QScrollArea
. Моя проблема заключается в том, что когда я загружаю изображение, которое больше, чем QScrollArea
, изображение кажется вырезанным (это нормально), но в пользовательском интерфейсе нет полос прокрутки.
Принимая во внимание различное recommandations из других вопросов 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?
Возможно, вам также нужно изменить размер 'scrollAreaWidgetContents'? Внешний вид прокрутки зависит от размера виджета. – vahancho
Да, это сработало! – Smash