From cb009c0f6e26a82e250c55aab6ec251eb7528869 Mon Sep 17 00:00:00 2001 From: Rafael Date: Sun, 20 Nov 2016 10:41:21 +0100 Subject: [PATCH] fullscreen picture viewer adapt when screen size changed --- OptionsDialog.cpp | 2 +- PictureDialog.cpp | 4 ++-- PictureWidget.cpp | 22 ++++++++++++++++++++-- PictureWidget.h | 2 ++ 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/OptionsDialog.cpp b/OptionsDialog.cpp index 7b270f4..2125f2d 100755 --- a/OptionsDialog.cpp +++ b/OptionsDialog.cpp @@ -41,7 +41,7 @@ OptionsDialog::OptionsDialog(ProfileDatabase *profileDB, QWidget *parent) : ui->tabWidget->setCurrentIndex(0); ui->labPicCustomRes->setVisible(false); - QRect desktopResolution = QApplication::desktop()->screenGeometry(); + QRect desktopResolution = QApplication::desktop()->screenGeometry(parent); int desktopSizeWidth = desktopResolution.width(); int desktopSizeHeight = desktopResolution.height(); aspectRatio = Qt::KeepAspectRatio; diff --git a/PictureDialog.cpp b/PictureDialog.cpp index a4ba5cf..00af9d1 100755 --- a/PictureDialog.cpp +++ b/PictureDialog.cpp @@ -400,8 +400,8 @@ void PictureDialog::on_labPicture_mouseDoubleClicked(Qt::MouseButton button) QObject::connect(pictureWidget, SIGNAL(nextPictureRequested()), this, SLOT(dialogNextPictureRequested())); QObject::connect(pictureWidget, SIGNAL(previousPictureRequested()), this, SLOT(dialogPreviousPictureRequested())); - pictureWidget->setMinimumSize(desktopRect.width(), desktopRect.height()); - pictureWidget->setMaximumSize(desktopRect.width(), desktopRect.height()); + pictureWidget->move(desktopRect.x(), desktopRect.y()); + pictureWidget->resize(desktopRect.width(), desktopRect.height()); pictureWidget->showFullScreen(); pictureWidget->setFocus(); pictureWidget->raise(); diff --git a/PictureWidget.cpp b/PictureWidget.cpp index 3909266..a95783d 100644 --- a/PictureWidget.cpp +++ b/PictureWidget.cpp @@ -19,6 +19,8 @@ #include "PictureDialog.h" #include "PictureWidget.h" #include "UiModLabel.h" +#include +#include #include #include #include @@ -42,6 +44,7 @@ PictureWidget::PictureWidget(QWidget *parent) : QDialog(parent) QObject::connect(pictureLabel, SIGNAL(mouseDoubleClicked(Qt::MouseButton)), this, SLOT(pictureDoubleClicked(Qt::MouseButton))); QObject::connect(pictureLabel, SIGNAL(customContextMenuRequested(QPoint)), parent, SLOT(exportCustomContextMenuRequested(QPoint))); + QObject::connect(QApplication::desktop(), SIGNAL(resized(int)), this, SLOT(updateWindowSize(int))); setLayout(widgetLayout); } @@ -81,12 +84,27 @@ void PictureWidget::pictureDoubleClicked(Qt::MouseButton button) } } -void PictureWidget::setImage(QImage image, QRect rec) +void PictureWidget::setImage(QImage image_, QRect rec) { + image = image_; pictureLabel->setPixmap(QPixmap::fromImage(image.scaled(rec.width(), rec.height(), Qt::KeepAspectRatio, Qt::SmoothTransformation))); } -void PictureWidget::setImage(QImage image) +void PictureWidget::setImage(QImage image_) { + image = image_; pictureLabel->setPixmap(QPixmap::fromImage(image.scaled(geometry().width(), geometry().height(), Qt::KeepAspectRatio, Qt::SmoothTransformation))); } + +void PictureWidget::updateWindowSize(int screenID) +{ + if (screenID = QApplication::desktop()->screenNumber(this)) + { + QRect desktopRect = QApplication::desktop()->screenGeometry(this); + this->move(desktopRect.x(), desktopRect.y()); + this->resize(desktopRect.width(), desktopRect.height()); + this->showFullScreen(); + pictureLabel->setPixmap(QPixmap::fromImage(image.scaled(desktopRect.width(), desktopRect.height(), Qt::KeepAspectRatio, Qt::SmoothTransformation))); + + } +} diff --git a/PictureWidget.h b/PictureWidget.h index 3ed3c36..f9066d9 100644 --- a/PictureWidget.h +++ b/PictureWidget.h @@ -42,9 +42,11 @@ protected: private: QHBoxLayout *widgetLayout; UiModLabel *pictureLabel; + QImage image; private slots: void pictureDoubleClicked(Qt::MouseButton button); + void updateWindowSize(int screenID); signals: void nextPictureRequested();