From 8aa8fdf0eb0f56482ddfbd6245790f152775b9aa Mon Sep 17 00:00:00 2001 From: dreamsourcelabTAI Date: Tue, 16 Nov 2021 18:24:12 +0800 Subject: [PATCH] update capture screen method --- DSView/pv/mainwindow.cpp | 42 ++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/DSView/pv/mainwindow.cpp b/DSView/pv/mainwindow.cpp index a8f3dc45..e1fa249c 100755 --- a/DSView/pv/mainwindow.cpp +++ b/DSView/pv/mainwindow.cpp @@ -30,10 +30,8 @@ #include #include #include -#include -#include -#include -#include +#include +#include #include #include #include @@ -868,20 +866,29 @@ void MainWindow::on_screenShot() { AppConfig &app = AppConfig::Instance(); QString default_name = app._userHistory.screenShotPath + "/DSView" + QDateTime::currentDateTime().toString("-yyMMdd-hhmmss"); - QPixmap pixmap; - QScreen *screen = QGuiApplication::primaryScreen(); - QDesktopWidget *desktop = QApplication::desktop(); - pixmap = screen->grabWindow(desktop->winId(), parentWidget()->pos().x(), parentWidget()->pos().y(), - parentWidget()->frameGeometry().width(), parentWidget()->frameGeometry().height()); + QPixmap pixmap = QPixmap::grabWindow(winId()); QString format = "png"; - QString fileName = QFileDialog::getSaveFileName(this, - tr("Save As"), default_name, - tr("%1 Files (*.%2);;All Files (*)") - .arg(format.toUpper()).arg(format)); + QString fileName = QFileDialog::getSaveFileName( + this, + tr("Save As"), + default_name, + // tr("%1 Files (*.%2);;All Files (*)") + "png file(*.png);;jpeg file(*.jpeg)", + &format); - if (!fileName.isEmpty()) { - pixmap.save(fileName, format.toLatin1()); + if (!fileName.isEmpty()) { + + QStringList list = format.split('.').last().split(')'); + QString suffix = list.first(); + + QFileInfo f(fileName); + if (f.suffix().compare(suffix)) + { + fileName += tr(".") + suffix; + } + + pixmap.save(fileName, suffix.toLatin1()); fileName = GetDirectoryName(fileName); @@ -895,10 +902,7 @@ void MainWindow::on_screenShot() //save file void MainWindow::on_save() { - using pv::dialogs::StoreProgress; - -// dialogs::RegionOptions *regionDlg = new dialogs::RegionOptions(_view, _session, this); -// regionDlg->exec(); + using pv::dialogs::StoreProgress; SigSession *_session = _control->GetSession();