X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fimageviewer.cpp;h=4a11da5308d4c786d347cfc8472edc88e84115a7;hb=63d59406e8f68dcf88e630c21b08da05e82b9b80;hp=fd5ec5d426b1a8aecac070bd81b75db85c906a77;hpb=5cb6b8733e62866d846eb27c85f1aa9d12df8b37;p=apitrace diff --git a/gui/imageviewer.cpp b/gui/imageviewer.cpp index fd5ec5d..4a11da5 100644 --- a/gui/imageviewer.cpp +++ b/gui/imageviewer.cpp @@ -1,7 +1,9 @@ #include "imageviewer.h" +#include #include #include +#include ImageViewer::ImageViewer(QWidget *parent) : QDialog(parent) @@ -24,8 +26,30 @@ ImageViewer::ImageViewer(QWidget *parent) void ImageViewer::setImage(const QImage &image) { + m_image = image; QPixmap px = QPixmap::fromImage(image); imageLabel->setPixmap(px); + updateGeometry(); +} + +QSize ImageViewer::sizeHint() const +{ + QSize size; + + int vScrollWidth = scrollArea->verticalScrollBar() ? + scrollArea->verticalScrollBar()->width() : 0; + int hScrollHeight = scrollArea->horizontalScrollBar() ? + scrollArea->horizontalScrollBar()->height() : 0; + QSize optimalWindowSize(m_image.width() + vScrollWidth, + m_image.height() + hScrollHeight); + + QRect screenRect = QApplication::desktop()->availableGeometry(); + const float maxPercentOfDesktopSpace = 0.8; + QSize maxAvailableSize(maxPercentOfDesktopSpace * screenRect.width(), + maxPercentOfDesktopSpace * screenRect.height()); + + return QSize(qMin(optimalWindowSize.width(), maxAvailableSize.width()), + qMin(optimalWindowSize.height(), maxAvailableSize.height())); } #include "imageviewer.moc"