QT截图
#ifndef CAPTURESCREEN_H
#define CAPTURESCREEN_H
#include <QWidget>
#include <QPainter>
#include<QRect>
#include<QLabel>
#include<QClipboard>
class CaptureScreen : public QWidget
{
Q_OBJECT
public:
CaptureScreen(QWidget *parent = 0);
~CaptureScreen();
QRect getRect(const QPoint &beginPoint, const QPoint &endPoint);
Q_SIGNALS:
void signalCompleteCature(QPixmap catureImage);
private:
void initWindow();
void loadBackgroundPixmap();
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent* event);
void mouseReleaseEvent(QMouseEvent *event);
void keyPressEvent(QKeyEvent *event);
void paintEvent(QPaintEvent *event);
QRect changePosition(const QPoint &beginPoint, const QPoint &endPoint);
private:
bool m_isMousePress1=false,m_isMousePress2=false;
QPixmap m_loadPixmap, m_capturePixmap;
int m_screenwidth;
int m_screenheight;
QPoint m_beginPoint, m_endPoint;
QPainter m_painter;
QPoint m_changePoint,m_begin_movePonit,m_end_movePoint;
QClipboard *clip;
QRect selectedRect;
int flag=0;
QPoint topLeft;
QPoint topRight ;
QPoint bottomLeft ;
QPoint bottomRight;
QPoint leftCenter ;
QPoint topCenter ;
QPoint rightCenter ;
QPoint bottomCenter ;
};
#endif
#include "capturescreen.h"
#include <QApplication>
#include <QDesktopWidget>
#include <QMouseEvent>
#include<QDebug>
CaptureScreen::CaptureScreen(QWidget *parent)
: QWidget(parent)
, m_isMousePress1(false)
{
initWindow();
loadBackgroundPixmap();
}
CaptureScreen::~CaptureScreen()
{
}
void CaptureScreen::initWindow()
{
this->setMouseTracking(true);
this->setWindowFlags(Qt::FramelessWindowHint);
setWindowState(Qt::WindowActive | Qt::WindowFullScreen);
}
void CaptureScreen::loadBackgroundPixmap()
{
m_loadPixmap = QPixmap::grabWindow(QApplication::desktop()->winId());
m_screenwidth = m_loadPixmap.width();
m_screenheight = m_loadPixmap.height();
}
void CaptureScreen::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
m_isMousePress1 = true;
m_isMousePress2 = true;
if(flag==1)
{
m_isMousePress1=false;
m_begin_movePonit=event->pos();
}
else if(flag==0)
{
m_beginPoint = event->pos();
}
}
return QWidget::mousePressEvent(event);
}
void CaptureScreen::mouseMoveEvent(QMouseEvent* event)
{
if (m_isMousePress1)
{
m_endPoint = event->pos();
update();
flag=