屏幕截图功能,在很多软件中都有使用。本文主要梳理一下这个功能的实现,方便在以后的项目中快速移植,对于这方面不太熟悉的,也可以参考一下其实现方式。
程序的实现效果图,见文章末尾。
头文件主要包含两个类,一个是截屏对象类,另一个是截屏窗口类,在截屏窗口中调用截屏对象。其详细的变量、方法定义如下:
#ifndef SCREENWIDGET_H #define SCREENWIDGET_H #include <QWidget> #include <QMenu> #include <QPoint> #include <QSize> //截屏对象类 class Screen { public: enum STATUS {SELECT, MOV, SET_W_H}; Screen() {} Screen(QSize size); void setStart(QPoint pos); void setEnd(QPoint pos); QPoint getStart(); QPoint getEnd(); QPoint getLeftUp(); QPoint getRightDown(); STATUS getStatus(); void setStatus(STATUS status); int width(); int height(); bool isInArea(QPoint pos); // 检测pos是否在截图区域内 void move(QPoint p); // 按 p 移动截图区域 private: QPoint leftUpPos, rightDownPos;