思路:先获取整个屏幕图像,保存到一个QPixmap中,然后在一个窗口中显示这图像。再利用鼠标事件,让用户在这个窗口(即图像)中选取一个区域,最后保存这个区域即可。
使用到的知识:
可以用下面的代码获取整个屏幕图像。
QPixmap::grabWindow( QApplication::desktop()->winId(), 0, 0, QApplication::desktop()->width(), QApplication::desktop()->height() ); 这个静态函数的返回值是一个QPixmap。
用setWindowFlags(Qt::Widget|Qt::FramelessWindowHint);将窗口的边界去掉,最后只余下一个图片。并用 resize(QApplication::desktop()->width(),QApplication::desktop()->height());将窗口设置为当前屏幕大小。
用户选取图片区域是可以用鼠标事件来完成。像QQ截图那样,用一个矩形来显示用户选取的区域。
记录用户左击按下时的坐标。当用户移动鼠标时,及时更新用户选取的区域。
最后用QPixmap类的copy函数获取用户选定的区域。这个函数返回一个QPixmap类型。然后使用这个类的save保存图片即可。
总体来说还是比较简单的。
代码下载地址:
http://download.csdn.net/detail/luotuo44/6198961
http://ishare.iask.sina.com.cn/f/61392219.html