C++ 如何在QWidget中获取QTDataVizalization的QPixmap并保存到文件?
我正在尝试使用QtDataVisualizationQ3DScatter制作一个三维散点图,然后获取该散点图的QPixmap并保存到文件中 这是我的密码C++ 如何在QWidget中获取QTDataVizalization的QPixmap并保存到文件?,c++,windows,qt,C++,Windows,Qt,我正在尝试使用QtDataVisualizationQ3DScatter制作一个三维散点图,然后获取该散点图的QPixmap并保存到文件中 这是我的密码 //set up the 3D scatter chart QtDataVisualization::Q3DScatter *graph = new QtDataVisualization::Q3DScatter(); QWidget *widget = QWidget::createWindowContainer(gr
//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");
//设置三维散点图
QtDataVisualization::Q3DScatter*图形=新的QtDataVisualization::Q3DScatter();
QWidget*widget=QWidget::createWindowContainer(图形);
QtDataVisualization::QScatter3DSeries*series=新的QtDataVisualization::QScatter3DSeries;
//设置数据变量
QtDataVisualization::QScatterDataArray数据;
//向数据变量添加数据
对于(int i;i附加项(数据);
//向图形中添加系列
图形->添加系列(系列);
//设置图形属性
graph->activeTheme()->setType(QtDataVisualization::Q3DTheme::ThemeArmyBlue);
图形->场景()->activeCamera()->setCameraPreset(QtDataVisualization::Q3DCamera::CameraPresetIsometricRight);
graph->seriesList().at(0)->setMesh(QtDataVisualization::QAbstract3DSeries::MeshPoint);
graph->setShadowQuality(QtDataVisualization::QAbstract3DGraph::ShadowQuality(0));
//widget->show();
常量矩形(0,0,小部件->宽度(),小部件->高度());
QPixmap测试=小部件->抓取(矩形);
保存(QString(workingDirectory)+“/test.png”、“png”);
当我取消对“widget->show()”的注释时,test.png只是一个白色的正方形,但是widget会出现并显示完整的3DScatter。当我注释掉“widget->show()”时,test.png仍然是一个白色的正方形。我似乎无法实现这一点。在注释
widget->show()
时,添加一个widget->repaint()
调用以强制在将小部件保存到文件中之前绘制/渲染它。这仍然没有任何作用。我仍然得到一个白色框:/感谢您尝试使用什么是节点
,x
,y
,z
?