如何在QWidget中获取QtDataVizualization的QPixmap并保存到文件中?
How do I grab a QPixmap of a QtDataVizualisation in a QWidget and save to file?
我正在尝试使用QtDataVisualizationQ3DScatter制作3D散点图,然后获取该QPixmap并保存到文件中。
这是我的代码。
//set up the 3D scatter chart
QtDataVisualization::Q3DScatter *graph = new QtDataVisualization::Q3DScatter();
QWidget *widget = QWidget::createWindowContainer(graph);
QtDataVisualization::QScatter3DSeries *series = new QtDataVisualization::QScatter3DSeries;
//set up the data variable
QtDataVisualization::QScatterDataArray data;
//add data to the data variable
for (int i; i < nodes.size(); i = i + 1)
{
data << QVector3D(x[i], y[i], z[i]);
}
//add the data to series
series->dataProxy()->addItems(data);
//add series to graph
graph->addSeries(series);
//set the graph properties
graph->activeTheme()->setType(QtDataVisualization::Q3DTheme::ThemeArmyBlue);
graph->scene()->activeCamera()->setCameraPreset(QtDataVisualization::Q3DCamera::CameraPresetIsometricRight);
graph->seriesList().at(0)->setMesh(QtDataVisualization::QAbstract3DSeries::MeshPoint);
graph->setShadowQuality(QtDataVisualization::QAbstract3DGraph::ShadowQuality(0));
//widget->show();
const QRect rectangle(0,0,widget->width(),widget->height());
QPixmap test = widget->grab(rectangle);
test.save(QString(workingDirectory) + "/test.png", "PNG");
当我取消注释"widget->show(("时,测试.png只是一个白色方块,但小部件出现并显示完整的 3DScatter。当我注释掉"widget->show(("时,test.png仍然只是一个白色方块。我似乎无法让它工作。
注释widget->show()
时,添加一个widget->repaint()
调用以强制在将小部件保存到文件中之前对其进行绘制/渲染。
我意识到这个问题已经很老了,但对于任何感兴趣的人:
QAbstract3DGraph 有一个函数 renderToImage。这是由Q3DScatter继承的。
您应该能够使用以下方法抓取场景的qimage:
QImage myImage = graph->renderToImage();
然后将其转换为像素图:
QPixmap p;
p.convertFromImage(myImage);
相关文章:
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 从函数角度看ID到文件路径的内部与外部映射
- 写入文件 a.txt,而终端重定向到文件 b.txt
- 如何使用 fprintf 将连续的 512 字节保存到文件中
- 看不到文件'SDL2.lib'
- 将字符串存储到文件下一行的变量中
- 将类型保存到文件
- 如何将包含另一个对象向量的对象保存到文件中,并使用C++中的二进制文件从文件中读回?
- C++ 生成文件未检测到 .h 文件中的更改
- 如何存储 unicode 字符并将其输出到文件?
- 将结构向量保存到文件中,并从C++文件中读取结构向量
- 将 clangd stderr 重定向到文件而不是控制台
- 如何将我的程序添加到文件和文件夹的macOS右键单击菜单?
- 是否可以将图像列表保存到文件中?
- 按下 QPushbutton 时将文本保存到文件
- 如何在C++中附加到文件?
- C++ ZBar cmake 错误"找不到文件"时包括
- C++以尽可能快的速度逐行将字符串保存到文件中
- LittleFS文件系统,NOR闪存的文件写入问题
- 如何在QWidget中获取QtDataVizualization的QPixmap并保存到文件中?