直接上项目:
项目框架:
m_rect.h
#ifndef M_RECT_H
#define M_RECT_H
#include <QMainWindow>
#include <QDesktopWidget>
#include <QMenu>//右键菜单
#include <QWidget>
#include <QMouseEvent>
#include <QPainter>//画笔
#include <QPixmap>
#include <QDebug>
#include <QApplication>
#include <QClipboard>
#include <QFileDialog>
#include <QShowEvent>
#include <QMessageBox>
namespace Ui {
class M_rect;
}
class M_rect : public QMainWindow
{
Q_OBJECT
public slots:
void save();
void copy();
protected:
void mousePressEvent(QMouseEvent *e);//鼠标按下事件
void mouseMoveEvent(QMouseEvent *e);//鼠标移动事件
void mouseReleaseEvent(QMouseEvent *e);//鼠标释放(松开)事件
void paintEvent(QPaintEvent *);//画图事件
void showEvent(QShowEvent *);//窗体show事件
void contextMenuEvent(QContextMenuEvent *);
public:
explicit M_rect(QWidget *parent = nullptr);
~M_rect();
QPixmap fullScreen;//全屏截图
QPoint getBeginPos();//获取鼠标的起始位置
QPoint getEndPos();//获取鼠标的结束位置
void setBeginPos(QPoint p);//设置鼠标的起始位置
void setEndPos(QPoint p);//设置鼠标的结束位置
private:
Ui::M_rect *ui;
QPoint beginPos;//记录鼠标的起始位置
QPoint endPos;//记录鼠标的结束位置
bool leftPres;//记录鼠标左键是否按下,按下为true
QRect * rect; //矩形截图区域
QMenu *menu;
signals:
void Return(QPixmap);
};
#endif // M_RECT_H
screenshot.h
#ifndef SCREENSHOT_H
#define SCREENSHOT_H
#include <QMainWindow>
#include<QFileDialog>
#include <QPixmap>
#include <QDesktopWidget>
#include <QMessageBox>
#include<synchapi.h>//sleep头文件
#include <QClipboard>
#include <QClipboard>
#include"m_rect.h"
QT_BEGIN_NAMESPACE
namespace Ui { class screenshot; }
QT_END_NAMESPACE
class screenshot : public QMainWindow
{
Q_OBJECT
public:
screenshot(QWidget *parent = nullptr);
~screenshot();
QRect getRect(const QPoint &beginPoint, const QPoint &endPoint);
QPixmap fullScreen;
private slots:
void on_close_clicked();
void on_newpicture_clicked();
void on_preservation_clicked();
void on_checkBox_stateChanged(int arg1);
void on_pushButton_clicked();
void on_copy_clicked();
private: