Изображение обрезается при изменении ориентации с помощью Qt - PullRequest
0 голосов
/ 12 апреля 2011

Привет всем,

Я не хочу разрабатывать ImageViewer, используя qt.Я пытаюсь изменить размеры больших изображений, масштабируя их.Моя проблема в том, что когда я меняю ориентацию экрана, некоторая часть изображения обрезается, а также, если я открываю изображение в альбомном режиме, по умолчанию размер изображения остается небольшим, даже когда я возвращаюсь в портретный режим.Что я делаю не так?

Пожалуйста, помогите мне.Вот код, который я написал

ImageViewer :: ImageViewer () {setAttribute (Qt :: WA_DeleteOnClose);QAction * back = new QAction (this);назад-> SetText (QString ( "Назад"));подключения (спина, SIGNAL (срабатывает ()), это, SLOT (близко ()));обратно-> setSoftKeyRole (QAction :: PositiveSoftKey);addAction (назад);

imageLabel = new QLabel();
imageLabel->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
imageLabel->setAlignment(/*Qt::AlignLeft|*/Qt::AlignCenter);
QWidget *widget = new QWidget;
layout=new QStackedLayout();
layout->addWidget(imageLabel);
widget->setLayout(layout);
setCentralWidget(widget);

}

void ImageViewer :: showImage (QString filePath) {QImageReader reader;reader.setFileName (Filepath);QSize imageSize = reader.size ();imageSize.scale (size (), Qt :: KeepAspectRatio);reader.setScaledSize (IMAGESIZE);QImage image = reader.read ();imageLabel-> setPixmap (QPixmap :: fromImage (изображение));imageLabel-> adjustSize ();}

1 Ответ

0 голосов
/ 12 апреля 2011

Вы должны заново внедрить QLabel resizeEvent или установить на него фильтр событий и обработать QResizeEvent там Содержимое метода showImage должно идти в обработчик события resize. В настоящее время вы используете size () виджета ImageViewer (который, похоже, является производным от QMainWindow), лучше использовать imageLabel.size (); или лучший QResizeEvent :: size (), поскольку это предотвратит проблему, если вы в будущем измените макет пользовательского интерфейса.

...