概述





三维柱状图

QWidget *graphContainer= QWidget::createWindowContainer(graph3D);
Q3DBars *graph3D= new Q3DBars();
graph3D->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetFrontHigh);
QValue3DAxis *axisV=new QValue3DAxis;
axisV->setTitle("value");
axisV->setTitleVisible(true);
QCategory3DAxis *axisRow=new QCategory3DAxis;
graph3D->setValueAxis(axisV);
graph3D->setRowAxis(axisRow);
QBar3DSeries *series= new QBar3DSeries;
series->setMesh(QAbstract3DSeries::MeshCylinder);
series->setItemLabelFormat("(@rowLabel,@colLabel): %.1f");
graph3D->addSeries(series);
QBarDataArray *dataSet = new QBarDataArray;
dataSet->reserve(rowLabs.count());
QBarDataRow *dataRow = new QBarDataRow;
*dataRow << 1 << 2<< 3<< 4<<5;
dataSet->append(dataRow);
series->dataProxy()->resetArray(dataSet);
graph3D->activeTheme()->setGridEnabled(checked);
series->setMeshSmooth(checked);
graph3D->setReflection(checked);
graph3D->valueAxis()->setTitleVisible(checked);
graph3D->rowAxis()->setTitleVisible(checked);
graph3D->columnAxis()->setTitleVisible(checked);
graph3D->activeTheme()->setLabelBackgroundEnabled(checked);
graph3D->valueAxis()->setReversed(checked);
graph3D->activeTheme()->setBackgroundEnabled(checked);
QFont font = graph3D->activeTheme()->font();
font.setPointSize(arg1);
graph3D->activeTheme()->setFont(font);
Q3DTheme *currentTheme = graph3D->activeTheme();
currentTheme->setType(Q3DTheme::Theme(index));
QColor color=series->baseColor();
color=QColorDialog::getColor(color);
if (color.isValid())
series->setBaseColor(color);
series->setItemLabelFormat("value at (@rowLabel,@colLabel): %.1f");
series->setItemLabelVisible(checked);
QAbstract3DSeries::Mesh aMesh;
aMesh=QAbstract3DSeries::Mesh(index);
series->setMesh(aMesh);
graph3D->setSelectionMode(QAbstract3DGraph::SelectionFlags(index));
Q3DCamera::CameraPreset cameraPos=Q3DCamera::CameraPreset(index);
graph3D->scene()->activeCamera()->setCameraPreset(cameraPos);
graph3D->scene()->activeCamera()->setCameraPosition(xRot, yRot,zoom);
三维散点图

Q3DScatter *graph3D=new Q3DScatter();;
QScatter3DSeries *series=new QScatter3DSeries(proxy);
QScatterDataProxy *proxy = new QScatterDataProxy();
series->setMeshSmooth(true);
graph3D->addSeries(series);
graph3D->axisX()->setTitle("axis X");
graph3D->axisX()->setTitleVisible(true);
QScatterDataArray *dataArray = new QScatterDataArray();
dataArray->resize(itemCount);
QScatterDataItem *ptrToDataArray = &dataArray->first();
for(i=1,i<100,++i)
{
ptrToDataArray->setPosition(QVector3D(x,z,y));
ptrToDataArray++;
}
三维曲面图



#include <QtDataVisualization>
using namespace QtDataVisualization;
QWidget* graphContainer=QWidget::createWindowContainer(graph3D);
Q3DSurface *graph3D= new Q3DSurface();
QValue3DAxis *axisX=new QValue3DAxis;
axisX->setTitle("Axis X");
axisX->setTitleVisible(true);
axisX->setRange(-11,11);
graph3D->setAxisX(axisX);
QSurfaceDataProxy *proxy= new QSurfaceDataProxy();
QSurface3DSeries* series= new QSurface3DSeries(proxy);
series->setItemLabelFormat("(@xLabel @yLabel @zLabel)");
series->setMeshSmooth(true);
series->setDrawMode(QSurface3DSeries::DrawSurfaceAndWireframe);
graph3D->addSeries(series);
QSurfaceDataArray *dataArray = new QSurfaceDataArray;
dataArray->reserve(N);
proxy->resetArray(dataArray);
QLinearGradient grBtoY(0, 0, 100, 0);
grBtoY.setColorAt(1.0, Qt::black);
grBtoY.setColorAt(0.0, Qt::yellow);
QPixmap pm(160, 20);
QPainter pmp(&pm);
pmp.setBrush(QBrush(grBtoY));
pmp.setPen(Qt::NoPen);
pmp.drawRect(0, 0, 160, 20);
ui->btnGrad1->setIcon(QIcon(pm));
QColor color=series->baseColor();
color=QColorDialog::getColor(color);
if (color.isValid())
{
series->setBaseColor(color);
series->setColorStyle(Q3DTheme::ColorStyleUniform);
}
graph3D->setSelectionMode(QAbstract3DGraph::SelectionSlice);
series->setDrawMode(QSurface3DSeries::DrawWireframe);
void MainWindow::on_btnGrad1_clicked()
{
QLinearGradient gr;
gr.setColorAt(0.0, Qt::black);
gr.setColorAt(0.33, Qt::blue);
gr.setColorAt(0.67, Qt::red);
gr.setColorAt(1.0, Qt::yellow);
series->setBaseGradient(gr);
series->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
}
QAbstract3DSeries::Mesh aMesh;
aMesh=QAbstract3DSeries::Mesh(index+1);
series->setMesh(aMesh);
三维地形图
Q3DSurface *graph3D= new Q3DSurface();
QImage heightMapImage(":/map/sea.png");
QHeightMapSurfaceDataProxy *proxy= new QHeightMapSurfaceDataProxy(heightMapImage);
proxy->setValueRanges(-5000, 5000, -5000, 5000);
QSurface3DSeries *series= new QSurface3DSeries(proxy);