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, )
这样的提示,最后程序会崩溃,请问这样的问题,需要怎么解决
...全文
788 3 打赏 收藏 转发到动态 举报
写回复
用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上
基于 Qt6.9.1 MinGW 64 位环境编译,仅支持 Windows 系统,解压后双击即可运行,无需额外安装 Qt 环境 完整依赖库:含 Qt6 核心运行库(Qt6Core.dll、Qt6Gui.dll、Qt6Widgets.dll)、MinGW 基础库(libgcc_s_seh-1.dll 等)及 Qt 平台插件(platforms 文件夹,确保程序正常启动),已通过 windeployqt 工具自动打包,无需手动补充;​ 使用说明书:使用指南.md,含系统功能模块介绍(客房管理 / 入住登记 / 退房结算 / 数据统计)、操作步骤截图、常见问题解决方案(如程序无响应、数据存储路径等);​ 开发说明文档:开发笔记.md,记录项目核心逻辑设计(房费计算规则、客房状态判断流程)、AI 辅助开发细节(解决的技术难点及对应方案),供 Qt6 学习者参考。​ 二、资源适用场景​ 需轻量化酒店管理工具的场景:适用于小型酒店、民宿等基础住宿信息管理,支持快速录入客房数据、高效完成入住退房流程,减少人工记录误差;​ Qt6 学习参考场景:适合初中级 Qt6 开发者,可通过程序实例了解 QWidget 界面设计、QTableWidget 数据展示、QSettings 本地存储等基础功能的实现逻辑,辅助理解 Qt 信号与槽机制。​ 三、使用注意事项​ 资源包解压后需保持文件结构完整,不可删除或重命名platforms文件夹及依赖库文件,否则可能导致程序无法启动;​ 程序默认将入住记录存储于data文件夹下的record.ini文件中,若需备份数据,直接复制该文件即可;​ 若运行时出现 “缺少 xxx.dll” 报错,可联系本人获取协助。​

21,491

社区成员

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

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