Files
tenmon/imagescrollarea.cpp
T

49 lines
1.2 KiB
C++

#include "imagescrollarea.h"
#include <QMouseEvent>
#include <QScrollBar>
#include <QKeyEvent>
ImageScrollArea::ImageScrollArea(QWidget *parent) : QScrollArea(parent)
{
m_label = new QLabel(this);
setWidget(m_label);
}
void ImageScrollArea::setImage(const QPixmap &img)
{
m_pixmap = img;
QPixmap pix = img.scaled(size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
m_label->setPixmap(pix);
m_label->resize(pix.size());
}
void ImageScrollArea::keyPressEvent(QKeyEvent *event)
{
event->ignore();
}
void ImageScrollArea::keyReleaseEvent(QKeyEvent *event)
{
event->ignore();
}
void ImageScrollArea::mouseMoveEvent(QMouseEvent *event)
{
QPoint delta = m_lastPos - event->pos();
horizontalScrollBar()->setValue(horizontalScrollBar()->value() + delta.x());
verticalScrollBar()->setValue(verticalScrollBar()->value() + delta.y());
m_lastPos = event->pos();
}
void ImageScrollArea::mousePressEvent(QMouseEvent *event)
{
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);
}