#include "mainwindow.h" #include "scaleform.h" #include "ui_mainwindow.h" #include #include #include ScaleForm *scaleForm = nullptr; MainWindow::MainWindow(const QStringList &filePaths, QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { scaleForm = new ScaleForm(this); ui->setupUi(this); ui->menubar->setCornerWidget(scaleForm); connect(ui->actionQuit, &QAction::triggered, qApp, &QApplication::quit); if (!filePaths.isEmpty()) { current.load(filePaths.first()); setWindowTitle(title_format.arg(filePaths.first())); fit(); } } MainWindow::~MainWindow() { delete ui; } void MainWindow::resizeEvent(QResizeEvent *event) { fit(); QMainWindow::resizeEvent(event); } void MainWindow::fit() { const auto pixmpSize = current.size(); const auto scaleSize = pixmpSize.scaled(ui->scrollArea->viewport()->size(), Qt::KeepAspectRatio); const int scale = std::min(scaleSize.width() * 100 / pixmpSize.width(), scaleSize.height() * 100 / pixmpSize.height()); ui->label->setPixmap( current.scaled(scaleSize, Qt::KeepAspectRatio, Qt::SmoothTransformation)); scaleForm->setScale(scale); } void MainWindow::scale(double scale) { const auto scaleSize = current.size() * scale; ui->label->setPixmap( current.scaled(scaleSize, Qt::KeepAspectRatio, Qt::SmoothTransformation)); scaleForm->setScale(scale * 100); }