• 6601阅读
  • 6回复

[提问]我做了个截图到剪贴板的程序,但是程序关闭剪贴板内容也没了 [复制链接]

上一主题 下一主题
离线hessian
 
只看楼主 倒序阅读 楼主  发表于: 2011-04-17
我做了个截图到剪贴板的程序,但是程序关闭剪贴板内容也没了,怎样在关闭程序之后仍然保持图片存在呢?

  1. void RegionGrabber::slotRegionGrabbed( const QPixmap &pix )
  2. {
  3.     QClipboard *cb = QApplication::clipboard();
  4.     cb->setPixmap( pix );
  5.     QApplication::exit(0);
  6. }

我的新浪微博:http://weibo.com/sseh
离线hessian
只看该作者 1楼 发表于: 2011-04-17
clipboard里存的是引用, 如果源程序被销毁,剪贴板的内容自然也没有了.

我看ksnapshot也没有实现, 如果这样是不是只能常驻内存了?
我的新浪微博:http://weibo.com/sseh
离线wxj120bw

只看该作者 2楼 发表于: 2011-04-18
不知道你操作剪切板时 是不是马上就调用了QApplication::exit(0);语句 推测可能事件循环还没有循环到剪切板操作时 程序就退出了
离线hessian
只看该作者 3楼 发表于: 2011-04-18
这个应该没有关系吧,我看其他程序里也一样的,如果我复制的是图片,而复制之后又把来源程序给关闭的话,那剪贴板内的图片都一样会消失.

除非打开Klipper, 而很奇怪的是,我用ksnapshot复制的图片在klipper里能找到,但是我自己写的程序就不行,我看了ksnapshot的源码,关于处理复制这段程序跟我的没什么区别啊.
我的新浪微博:http://weibo.com/sseh
离线wxj120bw

只看该作者 4楼 发表于: 2011-04-18
引用第3楼hessian于2011-04-18 11:21发表的  :
这个应该没有关系吧,我看其他程序里也一样的,如果我复制的是图片,而复制之后又把来源程序给关闭的话,那剪贴板内的图片都一样会消失.
除非打开Klipper, 而很奇怪的是,我用ksnapshot复制的图片在klipper里能找到,但是我自己写的程序就不行,我看了ksnapshot的源码,关于处理复制这段程序跟我的没什么区别啊.


ksnapshot没看过 有时间分析ksnapshot代码
离线hessian
只看该作者 5楼 发表于: 2011-04-20
我又做了一个取色器,也用到了剪贴板,但是很不幸的是,文本也是一样的情况,我相信肯定是我的使用有问题,但是错误出在哪里呢?

  1. void ColorPicker::mousePressEvent( QMouseEvent* e )
  2. {
  3.     if ( e->button() == Qt::LeftButton )
  4.     {
  5.         QClipboard* cb = QApplication::clipboard();
  6.         cb->setText( colorCode );
  7.         QApplication::quit();
  8.     }
  9. }

[ 此帖被hessian在2011-04-20 11:59重新编辑 ]
我的新浪微博:http://weibo.com/sseh
离线wxj120bw

只看该作者 6楼 发表于: 2011-04-26
[quote]引用第5楼hessian于2011-04-20 11:57发表的  :
我又做了一个取色器,也用到了剪贴板,但是很不幸的是,文本也是一样的情况,我相信肯定是我的使用有问题,但是错误出在哪里呢?

  1. void ColorPicker::mousePressEvent( QMouseEvent* e )
  2. {
  3. ....... [url=http://qtcn.org/bbs/job.php?action=topost&tid=36021&pid=101234][img]p_w_picpath/back.gif[/img][/url]
  4. [/quote]
  5. 我自己尝试了下 光有下面的代码 如果程序退出 剪切板上的内容还有
  6. [code]QClipboard* cb = QApplication::clipboard();
  7. cb->setText("123456");
快速回复
限100 字节
 
上一个 下一个