资源简介
一个简单的小例子来看一看如何用Qt实现一个简单的截图功能,详情见博客 http://blog.csdn.net/goforwardtostep/article/details/54099742

代码片段和文件信息
#include “capturescreen.h“
#include
#include
#include
CaptureScreen::CaptureScreen(QWidget *parent)
: QWidget(parent)
m_isMousePress(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_isMousePress = true;
m_beginPoint = event->pos();
}
return QWidget::mousePressEvent(event);
}
void CaptureScreen::mouseMoveEvent(QMouseEvent* event)
{
if (m_isMousePress)
{
m_endPoint = event->pos();
update();
}
return QWidget::mouseMoveEvent(event);
}
void CaptureScreen::mouseReleaseEvent(QMouseEvent *event)
{
m_endPoint = event->pos();
m_isMousePress = false;
return QWidget::mouseReleaseEvent(event);
}
void CaptureScreen::paintEvent(QPaintEvent *event)
{
m_painter.begin(this); //进行重绘;
QColor shadowColor = QColor(0 0 0 100); //阴影颜色设置;
m_painter.setPen(QPen(Qt::blue 1 Qt::SolidLine Qt::FlatCap)); //设置画笔;
m_painter.drawPixmap(0 0 m_loadPixmap); //将背景图片画到窗体上;
m_painter.fillRect(m_loadPixmap.rect() shadowColor); //画影罩效果;
if (m_isMousePress)
{
QRect selectedRect = getRect(m_beginPoint m_endPoint);
m_capturePixmap = m_loadPixmap.copy(selectedRect);
m_painter.drawPixmap(selectedRect.topLeft() m_capturePixmap);
m_painter.drawRect(selectedRect);
}
m_painter.end(); //重绘结束;
}
void CaptureScreen::keyPressEvent(QKeyEvent *event)
{
// Esc 键退出截图;
if (event->key() == Qt::Key_Escape)
{
close();
}
// Eeter键完成截图;
if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter)
{
signalCompleteCature(m_capturePixmap);
close();
}
}
QRect CaptureScreen::getRect(const QPoint &beginPoint const QPoint &endPoint)
{
int x y width height;
width = qAbs(beginPoint.x() - endPoint.x());
height = qAbs(beginPoint.y() - endPoint.y());
x = beginPoint.x() < endPoint.x() ? beginPoint.x() : endPoint.x();
y = beginPoint.y() < endPoint.y() ? beginPoint.y() : endPoint.y();
QRect selectedRect = QRect(x y width height);
// 避免宽或高为零时拷贝截图有误;
// 可以看QQ截图,当选取截图宽或高为零时默认为2;
if (selectedRect.width() == 0)
{
selectedRect.setWidth(1);
}
if (selectedRect.height() == 0)
{
selectedRect.setHeight(1);
}
return selectedRect;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2930 2017-01-09 09:47 Qt 之 实现简单截图功能(一)\capturescreen.cpp
文件 834 2017-01-09 09:48 Qt 之 实现简单截图功能(一)\capturescreen.h
目录 0 2017-01-09 10:39 Qt 之 实现简单截图功能(一)
----------- --------- ---------- ----- ----
3764 3
- 上一篇:Qt 之 HTTP 请求支持断点续传
- 下一篇:Qt 之 实现简单截图功能二
相关资源
- 酒店管理系统基于Qt Creator5)
- vtk QT做的三维地质可视化系统2of2
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- C 餐厅叫号系统(QT平)
- QT 实现文件下载
- qt图像处理
- QT,JPEG解码源代码(已完成)
- 一个网络封包截取工具[不是WPE]
- Qt 播放音频文件
- Qt 读取16进制的data文件
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- E4A免ROOT截图截桌面图类库
- MQTT推送Demo
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- 模拟网上银行截图(易语言)整蛊好
- QT酷炫界面开发指南《QmlBook》
- 代码项目“生成”微博、知乎、
- CtrlAltQ全屏截图源码
- 易语言全屏截图源码
- Ubuntu下操作Excel,qt代码
- Qt图片浏览器 --基于Qt的Graphics View f
- qtnribbon2破解
- wav语音文件裁剪 截取工具
- Qt软件开发 完整项目代码
评论
共有 条评论