mainwindows.h
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
void createSurface();
void createBar();
void createScatter();
};
mainwindows.cpp
#include "mainwindow.h"
#include <QtDataVisualization/Q3DSurface>
#include <QtDataVisualization/QCustom3DLabel>
#include <QtDataVisualization/QCustom3DItem>
#include <QtDataVisualization/Q3DBars>
#include <QtDataVisualization/Q3DScatter>
using namespace QtDataVisualization;
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
createScatter();
}
MainWindow::~MainWindow()
{
}
void MainWindow::createScatter()
{
Q3DScatter *scatter = new Q3DScatter;
QScatter3DSeries *series = new QScatter3DSeries;
QScatterDataArray *data = new QScatterDataArray;
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
for (int k = 0; k < 10; k++)
*data << QVector3D(i, j, k);
series->dataProxy()->resetArray(data);
scatter->addSeries(series);
QWidget *container = QWidget::createWindowContainer(scatter);
setCentralWidget(container);
}
void MainWindow::createBar()
{
Q3DBars *bar = new Q3DBars;
QBar3DSeries *series = new QBar3DSeries;
QBarDataArray *data = new QBarDataArray;
QBarDataRow *dataRow1 = new QBarDataRow;
QBarDataRow *dataRow2 = new QBarDataRow;
QBarDataRow *dataRow3 = new QBarDataRow;
QBarDataRow *dataRow4 = new QBarDataRow;
*dataRow1 << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;
*dataRow2 << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;
*dataRow3 << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;
*dataRow4 << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;
*data << dataRow1 << dataRow2 << dataRow3 << dataRow4;
series->dataProxy()->resetArray(data);
bar->addSeries(series);
QWidget *container = QWidget::createWindowContainer(bar);
setCentralWidget(container);
}
void MainWindow::createSurface()
{
Q3DSurface *surface = new Q3DSurface();
surface->axisX()->setTitle("AAA");
surface->axisY()->setTitle("VVV");
surface->axisZ()->setTitle("DDD");
connect(surface, &Q3DSurface::selectedElementChanged, [=](QAbstract3DGraph::ElementType type) {
qDebug() << "element changed " << type;
qDebug() << surface->axisX()->title() << surface->axisX()->labels()
<< surface->axisY()->title()
<< surface->axisZ()->title();
});
QWidget *container = QWidget::createWindowContainer(surface);
QSurfaceDataArray *data = new QSurfaceDataArray;
QSurfaceDataRow *dataRow1 = new QSurfaceDataRow;
QSurfaceDataRow *dataRow2 = new QSurfaceDataRow;
*dataRow1 << QVector3D(0.0f, 0.1f, 0.5f) << QVector3D(1.0f, 0.5f, 0.5f);
*dataRow2 << QVector3D(0.0f, 1.8f, 1.0f) << QVector3D(1.0f, 1.2f, 1.0f);
*data << dataRow1 << dataRow2;
QSurface3DSeries *series = new QSurface3DSeries;
series->dataProxy()->resetArray(data);
surface->addSeries(series);
QFont titleFont = QFont("Century Gothic", 30);
titleFont.setBold(true);
QCustom3DLabel *titleLabel = new QCustom3DLabel("Oil Rigs on Imaginary Sea", titleFont,
QVector3D(0.0f, 1.2f, 0.0f),
QVector3D(1.0f, 1.0f, 0.0f),
QQuaternion());
titleLabel->setPositionAbsolute(true);
titleLabel->setFacingCamera(true);
titleLabel->setBackgroundColor(QColor(0x66cdaa));
surface->addCustomItem(titleLabel);
setCentralWidget(container);
}