截图程序,支持多屏幕时跨屏幕截图。截图使用setMask达到镂空效果,截图后会有预览和保存功能。截图时按下Esc可退出。QT版本5.14.2。
mainwindow.ui
主窗体主要用来显示截图的缩略图,设置保存的文件名和路径,以及重置状态重新截图。
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QFileDialog>
#include <QPushButton>
#include <QPixmap>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowTitle(QString(tr("截图")));
ui->centralwidget->setMouseTracking(true);
ui->comboBox->addItem(QString(tr(".")));
ui->comboBox->addItem(QString(tr("Select Folder")));
connect(ui->comboBox, SIGNAL(activated(int)), this, SLOT(SelectFolder(int)));
connect(ui->button_reset, SIGNAL(clicked(bool)), this, SLOT(ResetSnap(bool)));
connect(ui->button_save, SIGNAL(clicked(bool)), this, SLOT(SavePicture(bool)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
qDebug()<<this->geometry();
QMainWindow::mouseMoveEvent(event);
}
void MainWindow::SetImage(QPixmap &pixmap)
{
const double defultWidth = 400.0;
const double defaultHeight = 160.0;
ui->label->setPixmap(pixmap);
double pixscale = 1.0 * pixmap.width()/pixmap.height();
double initscal