QWidget 截图出现问题

shy_wing 2017-11-29 02:41:31
因为需要做程序屏幕分析,我用时间器 QTimer 定时发送截屏时间间隔是 2s。 在on_timeout()的槽里面,我调用

QPixmap pixmap(this->m_widget_drawBorad->size());
this->m_widget_drawBorad->render(&pixmap);

把m_widget_drawBorad QWidget的内容图像截取。结果是发现运行一段时间后,会出现
Warning: [2017-11-29 12:51:34.361]QPainter::begin: Paint device returned engine == 0, type: 2 (:0, )
Warning: [2017-11-29 12:51:34.364]QWidget::render: Cannot render with an inactive painter (:0, )
这样的提示,最后程序会崩溃,请问这样的问题,需要怎么解决
...全文
752 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
shy_wing 2017-12-06
  • 打赏
  • 举报
回复
引用 1 楼 wuqiuzhi 的回复:
我提供自己遇到的问题,希望做个参考: 我原来在QT工程中,使用一个库,对于一个界面进行绘制,但是由于QT对于QPainter等控件,一次只能有一个被调用,所以,我调用QPainter进行绘制的时候,有很大的几率会崩溃,后来调整了绘制的时机,崩溃几率下降了很多。最好的方法是在主程序里面调用,使其满足不同时调用的条件。 我对QT也不是很熟,不知道你的问题跟这个有没有关系。 希望对你解决问题有一定的参考。
我换了一种方式截屏,原先使用定时器,没三秒钟一次截屏,长时间运行会发生奔溃,现在修改会当截屏的图像出现变化的时候,发送一次截屏,避免这样的问题。再你的回答中,你说一次只能有一个被调用,我是在主线程中截屏的,只线程没有做截屏操作,也会出现并发吗?
张小飞Official 2017-12-01
  • 打赏
  • 举报
回复
painter指针绘制之前save一下试试
wuqiuzhi 2017-12-01
  • 打赏
  • 举报
回复
我提供自己遇到的问题,希望做个参考: 我原来在QT工程中,使用一个库,对于一个界面进行绘制,但是由于QT对于QPainter等控件,一次只能有一个被调用,所以,我调用QPainter进行绘制的时候,有很大的几率会崩溃,后来调整了绘制的时机,崩溃几率下降了很多。最好的方法是在主程序里面调用,使其满足不同时调用的条件。 我对QT也不是很熟,不知道你的问题跟这个有没有关系。 希望对你解决问题有一定的参考。
基于qt+C++开发的截图工具+实现了截图后进行多种编辑类似QQ和微信的截图编辑功能,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于qt+C++开发的截图工具+实现了截图后进行多种编辑类似QQ和微信的截图编辑功能,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于qt+C++开发的截图工具+实现了截图后进行多种编辑类似QQ和微信的截图编辑功能,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 基于Qt的截图工具,采用了类似QQ截图的控制面板,实现截图后直接进行编辑 截图的思路主要是先得到当前的全屏图,然后沿着这个全屏图绘制一大圈路径,然后用暗色填充,即得到了背景大图。基本的截图操作就是根据鼠标初始按下的位置和最终松开的位置,根据这两个位置点,得到一个矩形,按照这个矩形绘制路径,然后再从背景大路径中将这个小路径用subpath扣掉,想要得到的截图区域就出现了。截图后的编辑功能是采用了将截取区域的图绘制到一个额外引入的label上

16,817

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧