Qt: отобразить изображение (QLabel) внутри QScrollArea

Я пытаюсь отобразить изображение внутри QScrollArea расположен на QMainWindow,

графический интерфейс пользователя

Я хочу фиксированный размер для отображения изображения и полосы прокрутки, если загруженное изображение больше, чем QScrollArea, Моя проблема в том, что когда я загружаю изображение, которое больше, чем QScrollAreaизображение выглядит обрезанным (что нормально), но полосы прокрутки в пользовательском интерфейсе не отображаются.

Принимая во внимание различные рекомендации из других вопросов 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?

1

Решение

Было бы более полезно, если вы предоставляете содержимое файла пользовательского интерфейса вместо сгенерированного кода C ++. Во всяком случае, кажется, что scrollAreaWidgetContents не имеет макета. Вам нужно добавить макет сетки в Qt Designer. После этого вам не нужно будет изменять размер ярлыка или scrollAreaWidgetContents вручную. Они будут изменены автоматически. призвание show на ярлыке тоже не требуется, он будет виден по умолчанию (если вы его не спрятали).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]