diff --git a/saorimediaview.cpp b/saorimediaview.cpp index 72d0ae7..e4c4f8a 100644 --- a/saorimediaview.cpp +++ b/saorimediaview.cpp @@ -26,12 +26,15 @@ #include "saorimediaview.h" #include "ui_saorimediaview.h" +#include +#include SaoriMediaView::SaoriMediaView(QWidget *parent) : QWidget(parent), ui(new Ui::SaoriMediaView) { ui->setupUi(this); + m_fit = true; } SaoriMediaView::~SaoriMediaView() @@ -41,11 +44,31 @@ void SaoriMediaView::setImage(QImage image) { - ui->media->setPixmap(QPixmap::fromImage(image)); + m_image = image; + ui->media->setPixmap(QPixmap::fromImage(m_image)); + ui->scrollArea->setWidgetResizable(true); + ui->media->adjustSize(); + if (m_fit) fit(); } -void SaoriMediaView::setUrls(QList urls, uint current) +void SaoriMediaView::setUrls(QList urls, uint current) { m_mediaList = urls; m_currentMedia = current; } + +void SaoriMediaView::fit() +{ + // FIXME この式正しいか? + QSize s = ui->scrollArea->size() - ui->scrollArea->sizeHint(); + ui->media->setPixmap(QPixmap::fromImage((m_image.scaled(s,Qt::KeepAspectRatio,Qt::SmoothTransformation)))); + ui->media->adjustSize(); + qDebug () << ui->scrollArea->size(); + qDebug () << ui->scrollArea->frameWidth(); +} + +void SaoriMediaView::resizeEvent(QResizeEvent *event) +{ + QWidget::resizeEvent(event); + if(m_fit) fit(); +} diff --git a/saorimediaview.h b/saorimediaview.h index 80186ef..d868325 100644 --- a/saorimediaview.h +++ b/saorimediaview.h @@ -31,6 +31,7 @@ #include #include #include +#include namespace Ui { class SaoriMediaView; @@ -45,11 +46,17 @@ ~SaoriMediaView(); void setImage(QImage image); - void setUrls(QList urls,uint current); + void setUrls(QList urls,uint current); protected: - QList m_mediaList; + void fit(); + virtual void resizeEvent(QResizeEvent *event); + +protected: + QList m_mediaList; uint m_currentMedia; + bool m_fit; + QImage m_image; private: Ui::SaoriMediaView *ui; diff --git a/saorimediaview.ui b/saorimediaview.ui index 92079bb..d8e681d 100644 --- a/saorimediaview.ui +++ b/saorimediaview.ui @@ -16,6 +16,9 @@ + + QAbstractScrollArea::AdjustIgnored + true