Keep image scaled to fit into window
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user