qt - 用于绘制数据的 Qt:截取窗口然后关闭窗口
问题描述
我有一个 Qt 程序可以将我的数据可视化为体素网格(见下图)。但是我只想运行一次 Qt 程序,以便显示数据,截屏然后退出整个程序。
这是我的代码:
int main(int argc, char** argv) {
QApplication app(argc, argv);
Mainframe frame(voxelGrid);
frame.show();
app.exec();
frame.saveScreenshot();
return 0;
}
在上面的例子Mainframe
中是一个继承自QMainWindow
.
但是,我似乎需要调用app.exec
,否则该saveScreenshot
函数将只存储黑色图像。app.exec
但是会导致无限循环,我需要在程序继续保存屏幕截图之前手动关闭窗口。知道如何解决这个问题吗?
使用 Qt 的截图功能:
QImage img = ui.mViewport->grabFrameBuffer();
img.save("screenshot.png");
QApplication::clipboard()->setImage(img);
解决方案
我使用 Qt抓取器示例截取屏幕截图:
#include "glwidget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
GLWidget w;
w.renderPixmap(w.width(), w.height()).save("screenshot.png");
return 0;
}
只需使用 QGLWidget::renderPixmap 来渲染框架。
该函数在内部渲染为帧缓冲区对象并执行像素回读。
推荐阅读
- selenium - python selenium一个一个地单击复选框,而不是全部一起
- c - 可以对数组进行排序以使 bsearch 工作吗?
- hadoop - “YARN”模式不适用于 Hadoop YARN 集群
- forms - 静态网站、文件上传和重新验证
- javascript - Pace-js 在 Vue 中无法与 Axios 一起使用
- sharepoint - 报表生成器无法在服务器外部打开
- python - 如何修复此 Dash 数据表回调错误?
- glsl - 从片段着色器打开纹理
- java - 从 .getNamedItem 中查找属性在解析 xml 后返回 null
- go - 使用 go-cmp 正确比较和查找具有导出成员的两个结构之间的差异