• 28486阅读
  • 39回复

基于Qt4的截屏软件(附源码) [复制链接]

上一主题 下一主题
离线roc496
 
只看楼主 倒序阅读 楼主  发表于: 2009-01-13
— 本帖被 XChinux 执行加亮操作(2009-01-13) —
            ScreenSnaper截图软件说明

    基于Qt4下的截屏软件
    使用了QPixmap::grabWindow(QApplication::desktop()->winId())来获得屏幕的图像
    并保存在QPixmap的一个对象fullScreenMap里
    再将该图像画到一个QWidget上并showFullScreen()以覆盖屏幕
    之后的操作都是在这个QWidget上进行
    跟QQ截图有点象
    完成后点鼠标右键就有ContextMenu弹出


    写得比较简单
    很容易看懂
    本人崇尚开源,和大家一起进步
    多多交流啦~

                        By Roc
                                2:55 2009-1-13
[ 此贴被roc496在2009-01-13 11:44重新编辑 ]
附件: ScreenSnaper.rar (14 K) 下载次数:1587
离线roc496
只看该作者 1楼 发表于: 2009-01-13
PS:
还有个小Bug
不知道大家发现没有
按了开始截图后就会闪一道白光
我已经用了图像双缓存了
估计是在showEvent()里使用showFullScreen()前就已经出现窗口了
没有仔细研究了

先睡觉了~
离线wvins
只看该作者 2楼 发表于: 2009-01-13
关注一下
离线duduqq

只看该作者 3楼 发表于: 2009-01-13
闪有可能是3D效果而出现的
离线aliushn

只看该作者 4楼 发表于: 2009-01-14
test
离线haulm

只看该作者 5楼 发表于: 2009-01-16
...
离线bobobo80
只看该作者 6楼 发表于: 2009-01-25
试试
离线qixi
只看该作者 7楼 发表于: 2009-01-26
我也下了。谢谢。
离线haulm

只看该作者 8楼 发表于: 2009-02-17
可以操作使用,但在Linux不可有效的保存图片。
离线fanfan9527
只看该作者 9楼 发表于: 2009-03-03
gjhg
离线yeguoxiong

只看该作者 10楼 发表于: 2009-03-06
写得很不错。
离线sohuwdj
只看该作者 11楼 发表于: 2009-03-08
为什么我下了打开有错误,能不能给我发一份?非常感谢!
离线sohuwdj
只看该作者 12楼 发表于: 2009-03-08
可以了呵呵,原来在fedora下没装可以开rar的文件
离线sd07hanyuqia
只看该作者 13楼 发表于: 2009-04-04
我也遇到了同样的问题,我在linux下用Qt4作一个画图小软件,就是拖动图源的时候,没有windows的mfc 那种异或的画图的方法。我是从Qt的官网上面看到的 Qt4不支持异或画法。希望大侠指点。
离线yeguoxiong

只看该作者 14楼 发表于: 2009-04-24
不错。
离线5706046

只看该作者 15楼 发表于: 2009-05-09
引用楼主roc496于2009-01-13 02:57发表的 基于Qt4的截屏软件(附源码) :
            ScreenSnaper截图软件说明
    基于Qt4下的截屏软件
    使用了QPixmap::grabWindow(QApplication::desktop()->winId())来获得屏幕的图像
    并保存在QPixmap的一个对象fullScreenMap里
.......




不错,第一次感觉非常棒~!多多交流。我再试试。
离线5706046

只看该作者 16楼 发表于: 2009-05-10
我打算改进一下,然后提交,让各位兄弟们共享!
离线koven_wong

只看该作者 17楼 发表于: 2009-05-18
感谢啦,正有此需要呢
离线koven_wong

只看该作者 18楼 发表于: 2009-05-18
E:/Qt/4.2.2/include/QtTest/../../tools/qtestlib/src/qtestkeyboard.h:54: undefine
d reference to `QTest::defaultKeyDelay()'
debug\main.o(.text+0x19c):E:/Qt/4.2.2/include/QtTest/../../tools/qtestlib/src/qt
estkeyboard.h:55: undefined reference to `QTest::defaultKeyDelay()'
debug\main.o(.text+0x27e):E:/Qt/4.2.2/include/QtTest/../../tools/qtestlib/src/qt
estkeyboard.h:62: undefined reference to `QTest::qWarn(char const*)'
debug\main.o(.text+0x37a): In function `ZN5QTest5qWaitEi':
E:/Qt/4.2.2/include/QtTest/../../tools/qtestlib/src/qtestsystem.h:43: undefined
reference to `QTest::qSleep(int)'
debug\main.o(.text+0x15ff): In function `ZN5QTest10mouseEventENS_11MouseActionEP
7QWidgetN2Qt11MouseButtonE6QFlagsINS3_16KeyboardModifierEE6QPointi':
E:/Qt/4.2.2/include/QtTest/../../tools/qtestlib/src/qtestmouse.h:55: undefined r
eference to `QTest::defaultMouseDelay()'
debug\main.o(.text+0x1615):E:/Qt/4.2.2/include/QtTest/../../tools/qtestlib/src/q
testmouse.h:56: undefined reference to `QTest::defaultMouseDelay()'
debug\main.o(.text+0x1d0a):E:/Qt/4.2.2/include/QtTest/../../tools/qtestlib/src/q
testmouse.h:95: undefined reference to `QTest::qWarn(char const*)'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\ScreenSnaper.exe] Error 1
mingw32-make[1]: Leaving directory `F:/Qt/ScreenSnaper'
mingw32-make: *** [debug] Error 2
离线koven_wong

只看该作者 19楼 发表于: 2009-05-18
不知道楼主用的什么版本的qt
离线usbtopc

只看该作者 20楼 发表于: 2009-07-30
感谢分享!
离线meronasia
只看该作者 21楼 发表于: 2009-10-24
谢谢楼主分享
Windows7
Qt 4.52
Notpad + MinGW
离线dayong
只看该作者 22楼 发表于: 2009-10-26
感谢楼主,真是受益菲浅阿~
男儿当自强!
离线he119

只看该作者 23楼 发表于: 2010-02-02
哥哥也来顶一下先!
离线327827371
只看该作者 24楼 发表于: 2010-02-02
我用4.6.1编译不过..
离线yaotong195

只看该作者 25楼 发表于: 2010-02-08

不知道为什么会出现图形的嵌套呢,效果如附件,但是嵌套只出现在不全屏或者程序自身显示的情况下,
如果全屏或者把自身隐藏则不会出现,
但是在非全屏的情况下,在定时器下只截屏后保存成文件的话,在查看文件则没有出现嵌套,现实的时候才出现,
哪位大侠能否给解释一下为什么。
离线lengshuang
只看该作者 26楼 发表于: 2010-03-01
在Qt Creator1.3中出错了
离线x000zhiwei
只看该作者 27楼 发表于: 2010-03-02
试试
离线prout
只看该作者 28楼 发表于: 2010-03-08
回复楼主:把你的showEvent函数内容写到构造函数里就会避免这个问题了。
离线m1352
只看该作者 29楼 发表于: 2010-06-29
果然是特么好东西 顶嘞
离线phymal

只看该作者 30楼 发表于: 2010-09-08
不错。谢谢分享啊
只看该作者 31楼 发表于: 2010-09-11
我不知道大家的能否编译成功,反正我的是不能编译成功,提示:undefined reference to `...(略)' ,查了一下,感觉是<QtTest/QTest>这个头文件出的问题,纵观全文,并未发现有使用这个头文件的地方,于是,自己尝试着把此头文件删除,然后编译,遂成功,幸甚,运行良好,细观程序,然后知楼主之才,佩服佩服。
离线opcbo
只看该作者 32楼 发表于: 2011-03-03
我来帮忙测试一下!
离线yeguoxiong

只看该作者 33楼 发表于: 2011-03-26
把showFullScreen();
放在构造函数里。然后加入
this->setWindowFlags(Qt::FramelessWindowHint  );
this->showFullScreen();就不会闪屏了。
离线myarmdream
只看该作者 34楼 发表于: 2011-04-05
菜鸟飞过……
离线hitler++

只看该作者 35楼 发表于: 2011-04-13
我也崇尚他人开源,自己闭源
离线xinyun121

只看该作者 36楼 发表于: 2011-05-18
感谢楼主分享,观摩一下先
离线zhuzishan83
只看该作者 37楼 发表于: 2011-05-19
回 楼主(roc496) 的帖子
顶楼主一个
离线kirk119
只看该作者 38楼 发表于: 2012-10-28
下载不了啊,什么情况
离线lch922

只看该作者 39楼 发表于: 2012-11-20
视频应该截不了吧?用directX截图才是硬道理啊
给我一片天空,还你一道彩虹。
快速回复
限100 字节
 
上一个 下一个