diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..2018d0a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "system_error": "cpp" + } +} \ No newline at end of file diff --git a/src/backend/image_show.cpp b/src/backend/image_show.cpp index f817a49..a57c86e 100644 --- a/src/backend/image_show.cpp +++ b/src/backend/image_show.cpp @@ -22,13 +22,13 @@ void image_show::setImage(QPixmap image) QImage re_screen1; QImage re_screen0 = screen0.scaled(QSize(400, 300), Qt::KeepAspectRatio, Qt::SmoothTransformation); - // 获取主屏幕尺寸 - desktop_w = QGuiApplication::primaryScreen()->geometry().width(); - desktop_h = QGuiApplication::primaryScreen()->geometry().height(); + // 获取当前app所在的主屏幕尺寸 + desktop_w = QGuiApplication::screenAt(QCursor().pos())->geometry().width(); + desktop_h = QGuiApplication::screenAt(QCursor().pos())->geometry().height(); - if (screen0.width() > (desktop_w - 20) || screen0.height() > (desktop_h - 20)) + if (screen0.width() > int(desktop_w / 3 * 2) || screen0.height() > int(desktop_h / 3 * 2)) { - re_screen1 = screen0.scaled(QSize(desktop_w - 20, desktop_h - 20), Qt::KeepAspectRatio, Qt::SmoothTransformation); + re_screen1 = screen0.scaled(QSize(int(desktop_w / 3 * 2), int(desktop_h / 3 * 2)), Qt::KeepAspectRatio, Qt::SmoothTransformation); m_image = QPixmap::fromImage(re_screen1); } else @@ -42,12 +42,12 @@ void image_show::setImage(QPixmap image) void image_show::mousePressEvent(QMouseEvent *) { m_dialog->setimage(m_image); - m_dialog->showFullScreen(); + m_dialog->show(); // 识别主屏幕尺寸并设置 widget 大小 - m_dialog->setFixedSize(desktop_w, desktop_h); + m_dialog->setFixedSize(qMin(desktop_w, m_image.width() + int(desktop_h / 16 * m_image.width() / m_image.height())), qMin(desktop_h, m_image.height() + int(desktop_h / 16))); - m_dialog->move(0, 0); + m_dialog->move(QGuiApplication::screenAt(QCursor().pos())->geometry().center() - m_dialog->rect().center()); } image_show::~image_show() {