Keep image scaled to fit into window

This commit is contained in:
2016-07-30 14:58:03 +02:00
parent 5881dfeef5
commit b44ff27f54
2 changed files with 10 additions and 0 deletions
+8
View File
@@ -11,6 +11,7 @@ ImageScrollArea::ImageScrollArea(QWidget *parent) : QScrollArea(parent)
void ImageScrollArea::setImage(const QPixmap &img) void ImageScrollArea::setImage(const QPixmap &img)
{ {
m_pixmap = img;
QPixmap pix = img.scaled(size(), Qt::KeepAspectRatio, Qt::SmoothTransformation); QPixmap pix = img.scaled(size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
m_label->setPixmap(pix); m_label->setPixmap(pix);
m_label->resize(pix.size()); m_label->resize(pix.size());
@@ -38,3 +39,10 @@ void ImageScrollArea::mousePressEvent(QMouseEvent *event)
{ {
m_lastPos = event->pos(); m_lastPos = event->pos();
} }
void ImageScrollArea::resizeEvent(QResizeEvent *event)
{
m_label->setPixmap(m_pixmap.scaled(event->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation));
m_label->resize(event->size());
QScrollArea::resizeEvent(event);
}
+2
View File
@@ -8,6 +8,7 @@ class ImageScrollArea : public QScrollArea
{ {
QPoint m_lastPos; QPoint m_lastPos;
QLabel *m_label; QLabel *m_label;
QPixmap m_pixmap;
public: public:
explicit ImageScrollArea(QWidget *parent = 0); explicit ImageScrollArea(QWidget *parent = 0);
void setImage(const QPixmap &img); void setImage(const QPixmap &img);
@@ -16,6 +17,7 @@ protected:
void keyReleaseEvent(QKeyEvent *event); void keyReleaseEvent(QKeyEvent *event);
void mouseMoveEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent *event); void mousePressEvent(QMouseEvent *event);
void resizeEvent(QResizeEvent *event);
}; };
#endif // IMAGESCROLLAREA_H #endif // IMAGESCROLLAREA_H