From dd99eb73740ad015a2a2d28481e5a2ca8ab1d7b1 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Tue, 5 Aug 2014 14:00:08 +0300 Subject: Enable camera targeting. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also fix custom item positioning in absolute mode as it was completely broken in bars and z-coord was flipped in others. Clarified Q3DObject::position property usage, namely that it is reserved for internal use for now. Some refactoring also done. Task-number: QTRD-2567 Change-Id: I5da65b83a2f8ecf20f8fd054e59748278ef1a714 Reviewed-by: Titta Heikkala Reviewed-by: Tomi Korpipää --- tests/barstest/chart.cpp | 24 +++++++ tests/barstest/chart.h | 4 ++ tests/barstest/main.cpp | 28 +++++++- tests/qmlcamera/qml/qmlcamera/main.qml | 27 +++++--- tests/scattertest/main.cpp | 47 +++++++++++--- tests/scattertest/scatterchart.cpp | 24 +++++++ tests/scattertest/scatterchart.h | 5 ++ tests/surfacetest/graphmodifier.cpp | 24 +++++++ tests/surfacetest/graphmodifier.h | 4 ++ tests/surfacetest/main.cpp | 115 +++++++++++++++++++++------------ 10 files changed, 242 insertions(+), 60 deletions(-) (limited to 'tests') diff --git a/tests/barstest/chart.cpp b/tests/barstest/chart.cpp index e0f9ff18..445c235e 100644 --- a/tests/barstest/chart.cpp +++ b/tests/barstest/chart.cpp @@ -1495,6 +1495,30 @@ void GraphModifier::handleFpsChange(qreal fps) m_fpsLabel->setText(fpsPrefix + QString::number(qRound(fps))); } +void GraphModifier::setCameraTargetX(int value) +{ + // Value is (-100, 100), normalize + m_cameraTarget.setX(float(value) / 100.0f); + m_graph->scene()->activeCamera()->setTarget(m_cameraTarget); + qDebug() << "m_cameraTarget:" << m_cameraTarget; +} + +void GraphModifier::setCameraTargetY(int value) +{ + // Value is (-100, 100), normalize + m_cameraTarget.setY(float(value) / 100.0f); + m_graph->scene()->activeCamera()->setTarget(m_cameraTarget); + qDebug() << "m_cameraTarget:" << m_cameraTarget; +} + +void GraphModifier::setCameraTargetZ(int value) +{ + // Value is (-100, 100), normalize + m_cameraTarget.setZ(float(value) / 100.0f); + m_graph->scene()->activeCamera()->setTarget(m_cameraTarget); + qDebug() << "m_cameraTarget:" << m_cameraTarget; +} + void GraphModifier::populateFlatSeries(QBar3DSeries *series, int rows, int columns, float value) { QBarDataArray *dataArray = new QBarDataArray; diff --git a/tests/barstest/chart.h b/tests/barstest/chart.h index 7ee781ad..6740df73 100644 --- a/tests/barstest/chart.h +++ b/tests/barstest/chart.h @@ -118,6 +118,9 @@ public slots: void triggerRotation(); void handleValueAxisLabelsChanged(); void handleFpsChange(qreal fps); + void setCameraTargetX(int value); + void setCameraTargetY(int value); + void setCameraTargetZ(int value); signals: void shadowQualityChanged(int quality); @@ -172,6 +175,7 @@ private: QTimer m_rotationTimer; QLabel *m_fpsLabel; QBar3DSeries *m_extraSeries; + QVector3D m_cameraTarget; }; #endif diff --git a/tests/barstest/main.cpp b/tests/barstest/main.cpp index 2d755c7f..bd891cd3 100644 --- a/tests/barstest/main.cpp +++ b/tests/barstest/main.cpp @@ -331,6 +331,22 @@ int main(int argc, char **argv) valueAxisSegmentsSpin->setMaximum(100); valueAxisSegmentsSpin->setValue(10); + QSlider *cameraTargetSliderX = new QSlider(Qt::Horizontal, widget); + cameraTargetSliderX->setTickInterval(1); + cameraTargetSliderX->setMinimum(-100); + cameraTargetSliderX->setValue(0); + cameraTargetSliderX->setMaximum(100); + QSlider *cameraTargetSliderY = new QSlider(Qt::Horizontal, widget); + cameraTargetSliderY->setTickInterval(1); + cameraTargetSliderY->setMinimum(-100); + cameraTargetSliderY->setValue(0); + cameraTargetSliderY->setMaximum(100); + QSlider *cameraTargetSliderZ = new QSlider(Qt::Horizontal, widget); + cameraTargetSliderZ->setTickInterval(1); + cameraTargetSliderZ->setMinimum(-100); + cameraTargetSliderZ->setValue(0); + cameraTargetSliderZ->setMaximum(100); + vLayout->addWidget(addSeriesButton, 0, Qt::AlignTop); vLayout->addWidget(addDataButton, 0, Qt::AlignTop); vLayout->addWidget(addMultiDataButton, 0, Qt::AlignTop); @@ -400,7 +416,11 @@ int main(int argc, char **argv) vLayout3->addWidget(new QLabel(QStringLiteral("Log axis base")), 0, Qt::AlignTop); vLayout3->addWidget(logBaseEdit, 0, Qt::AlignTop); vLayout3->addWidget(new QLabel(QStringLiteral("Value axis segments")), 0, Qt::AlignTop); - vLayout3->addWidget(valueAxisSegmentsSpin, 1, Qt::AlignTop); + vLayout3->addWidget(valueAxisSegmentsSpin, 0, Qt::AlignTop); + vLayout3->addWidget(new QLabel(QStringLiteral("Camera target")), 0, Qt::AlignTop); + vLayout3->addWidget(cameraTargetSliderX, 0, Qt::AlignTop); + vLayout3->addWidget(cameraTargetSliderY, 0, Qt::AlignTop); + vLayout3->addWidget(cameraTargetSliderZ, 1, Qt::AlignTop); // TODO: Add example for setMeshFileName widget->show(); @@ -429,6 +449,12 @@ int main(int argc, char **argv) &GraphModifier::setMinY); QObject::connect(maxSliderY, &QSlider::valueChanged, modifier, &GraphModifier::setMaxY); + QObject::connect(cameraTargetSliderX, &QSlider::valueChanged, modifier, + &GraphModifier::setCameraTargetX); + QObject::connect(cameraTargetSliderY, &QSlider::valueChanged, modifier, + &GraphModifier::setCameraTargetY); + QObject::connect(cameraTargetSliderZ, &QSlider::valueChanged, modifier, + &GraphModifier::setCameraTargetZ); QObject::connect(shadowQuality, SIGNAL(currentIndexChanged(int)), modifier, SLOT(changeShadowQuality(int))); diff --git a/tests/qmlcamera/qml/qmlcamera/main.qml b/tests/qmlcamera/qml/qmlcamera/main.qml index 444e175c..cb1737f6 100644 --- a/tests/qmlcamera/qml/qmlcamera/main.qml +++ b/tests/qmlcamera/qml/qmlcamera/main.qml @@ -18,7 +18,7 @@ import QtQuick 2.1 import QtQuick.Controls 1.0 -import QtDataVisualization 1.1 +import QtDataVisualization 1.2 import "." Rectangle { @@ -35,6 +35,15 @@ Rectangle { id: chartAxes } + Camera3D { + id: customCamera + wrapXRotation: false + xRotation: camControlArea.xValue + yRotation: camControlArea.yValue + zoomLevel: zoomSlider.value + target: Qt.vector3d(1.0, 1.0, 1.0) + } + Item { id: dataView width: parent.width - camControlArea.width @@ -60,21 +69,18 @@ Rectangle { columnAxis: chartAxes.column valueAxis: chartAxes.expenses - // Bind UI controls to the camera - scene.activeCamera.wrapXRotation: false - scene.activeCamera.xRotation: camControlArea.xValue - scene.activeCamera.yRotation: camControlArea.yValue - scene.activeCamera.zoomLevel: zoomSlider.value + scene.activeCamera: customCamera inputHandler: null customItemList: [shuttleItem, labelItem] + orthoProjection: true } Custom3DItem { id: shuttleItem meshFile: ":/items/shuttle.obj" textureFile: ":/items/shuttle.png" - position: Qt.vector3d(5.0,29.0,3.0) + position: Qt.vector3d(2.0,29.0,2.0) scaling: Qt.vector3d(0.2,0.2,0.2) } @@ -82,7 +88,7 @@ Rectangle { id: labelItem facingCamera: true positionAbsolute: true - position: Qt.vector3d(0.0,1.5,0.0) + position: Qt.vector3d(-1.0,1.5,-1.0) scaling: Qt.vector3d(1.0,1.0,1.0) text: "Qt Shuttle" } @@ -162,6 +168,11 @@ Rectangle { currentAngle += 5 chartData.series.meshAngle = currentAngle shuttleItem.setRotationAxisAndAngle(Qt.vector3d(0.0, 1.0, 1.0), currentAngle) + console.log("label pos:", labelItem.position) + labelItem.position.x += 0.1 + labelItem.position.z += 0.1 + customCamera.target.x -= 0.1 + customCamera.target.z -= 0.1 } } diff --git a/tests/scattertest/main.cpp b/tests/scattertest/main.cpp index 55515cb0..116a4dc2 100644 --- a/tests/scattertest/main.cpp +++ b/tests/scattertest/main.cpp @@ -41,6 +41,7 @@ int main(int argc, char **argv) QHBoxLayout *hLayout = new QHBoxLayout(widget); QVBoxLayout *vLayout = new QVBoxLayout(); QVBoxLayout *vLayout2 = new QVBoxLayout(); + QVBoxLayout *vLayout3 = new QVBoxLayout(); Q3DScatter *chart = new Q3DScatter(); QSize screenSize = chart->screen()->size(); @@ -56,6 +57,7 @@ int main(int argc, char **argv) hLayout->addWidget(container, 1); hLayout->addLayout(vLayout); hLayout->addLayout(vLayout2); + hLayout->addLayout(vLayout3); QPushButton *themeButton = new QPushButton(widget); themeButton->setText(QStringLiteral("Change theme")); @@ -276,6 +278,22 @@ int main(int argc, char **argv) radialLabelSlider->setValue(100); radialLabelSlider->setMaximum(150); + QSlider *cameraTargetSliderX = new QSlider(Qt::Horizontal, widget); + cameraTargetSliderX->setTickInterval(1); + cameraTargetSliderX->setMinimum(-100); + cameraTargetSliderX->setValue(0); + cameraTargetSliderX->setMaximum(100); + QSlider *cameraTargetSliderY = new QSlider(Qt::Horizontal, widget); + cameraTargetSliderY->setTickInterval(1); + cameraTargetSliderY->setMinimum(-100); + cameraTargetSliderY->setValue(0); + cameraTargetSliderY->setMaximum(100); + QSlider *cameraTargetSliderZ = new QSlider(Qt::Horizontal, widget); + cameraTargetSliderZ->setTickInterval(1); + cameraTargetSliderZ->setMinimum(-100); + cameraTargetSliderZ->setValue(0); + cameraTargetSliderZ->setMaximum(100); + vLayout->addWidget(themeButton, 0, Qt::AlignTop); vLayout->addWidget(labelButton, 0, Qt::AlignTop); vLayout->addWidget(styleButton, 0, Qt::AlignTop); @@ -326,15 +344,20 @@ int main(int argc, char **argv) vLayout2->addWidget(aspectRatioSlider); vLayout2->addWidget(new QLabel(QStringLiteral("Adjust horizontal aspect ratio"))); vLayout2->addWidget(horizontalAspectRatioSlider, 1, Qt::AlignTop); - vLayout2->addWidget(optimizationStaticCB); - vLayout2->addWidget(orthoCB); - vLayout2->addWidget(polarCB); - vLayout2->addWidget(axisTitlesVisibleCB); - vLayout2->addWidget(axisTitlesFixedCB); - vLayout2->addWidget(new QLabel(QStringLiteral("Axis label rotation"))); - vLayout2->addWidget(axisLabelRotationSlider); - vLayout2->addWidget(new QLabel(QStringLiteral("Radial label offset"))); - vLayout2->addWidget(radialLabelSlider, 1, Qt::AlignTop); + + vLayout3->addWidget(optimizationStaticCB); + vLayout3->addWidget(orthoCB); + vLayout3->addWidget(polarCB); + vLayout3->addWidget(axisTitlesVisibleCB); + vLayout3->addWidget(axisTitlesFixedCB); + vLayout3->addWidget(new QLabel(QStringLiteral("Axis label rotation"))); + vLayout3->addWidget(axisLabelRotationSlider); + vLayout3->addWidget(new QLabel(QStringLiteral("Radial label offset"))); + vLayout3->addWidget(radialLabelSlider, 0, Qt::AlignTop); + vLayout3->addWidget(new QLabel(QStringLiteral("Camera target")), 0, Qt::AlignTop); + vLayout3->addWidget(cameraTargetSliderX, 0, Qt::AlignTop); + vLayout3->addWidget(cameraTargetSliderY, 0, Qt::AlignTop); + vLayout3->addWidget(cameraTargetSliderZ, 1, Qt::AlignTop); ScatterDataModifier *modifier = new ScatterDataModifier(chart); @@ -440,6 +463,12 @@ int main(int argc, char **argv) &ScatterDataModifier::setHorizontalAspectRatio); QObject::connect(radialLabelSlider, &QSlider::valueChanged, modifier, &ScatterDataModifier::changeRadialLabelOffset); + QObject::connect(cameraTargetSliderX, &QSlider::valueChanged, modifier, + &ScatterDataModifier::setCameraTargetX); + QObject::connect(cameraTargetSliderY, &QSlider::valueChanged, modifier, + &ScatterDataModifier::setCameraTargetY); + QObject::connect(cameraTargetSliderZ, &QSlider::valueChanged, modifier, + &ScatterDataModifier::setCameraTargetZ); modifier->setFpsLabel(fpsLabel); diff --git a/tests/scattertest/scatterchart.cpp b/tests/scattertest/scatterchart.cpp index 5db772b5..35d56236 100644 --- a/tests/scattertest/scatterchart.cpp +++ b/tests/scattertest/scatterchart.cpp @@ -993,6 +993,30 @@ void ScatterDataModifier::toggleOrtho(bool enable) m_chart->setOrthoProjection(enable); } +void ScatterDataModifier::setCameraTargetX(int value) +{ + // Value is (-100, 100), normalize + m_cameraTarget.setX(float(value) / 100.0f); + m_chart->scene()->activeCamera()->setTarget(m_cameraTarget); + qDebug() << "m_cameraTarget:" << m_cameraTarget; +} + +void ScatterDataModifier::setCameraTargetY(int value) +{ + // Value is (-100, 100), normalize + m_cameraTarget.setY(float(value) / 100.0f); + m_chart->scene()->activeCamera()->setTarget(m_cameraTarget); + qDebug() << "m_cameraTarget:" << m_cameraTarget; +} + +void ScatterDataModifier::setCameraTargetZ(int value) +{ + // Value is (-100, 100), normalize + m_cameraTarget.setZ(float(value) / 100.0f); + m_chart->scene()->activeCamera()->setTarget(m_cameraTarget); + qDebug() << "m_cameraTarget:" << m_cameraTarget; +} + void ScatterDataModifier::changeShadowQuality(int quality) { QAbstract3DGraph::ShadowQuality sq = QAbstract3DGraph::ShadowQuality(quality); diff --git a/tests/scattertest/scatterchart.h b/tests/scattertest/scatterchart.h index df2494b6..1a97c5f0 100644 --- a/tests/scattertest/scatterchart.h +++ b/tests/scattertest/scatterchart.h @@ -98,6 +98,9 @@ public slots: void togglePolar(bool enable); void toggleStatic(bool enable); void toggleOrtho(bool enable); + void setCameraTargetX(int value); + void setCameraTargetY(int value); + void setCameraTargetZ(int value); signals: void shadowQualityChanged(int quality); @@ -118,6 +121,8 @@ private: QScatter3DSeries *m_targetSeries; QScatterDataArray m_massiveTestCacheArray; QLabel *m_fpsLabel; + QVector3D m_cameraTarget; + }; #endif diff --git a/tests/surfacetest/graphmodifier.cpp b/tests/surfacetest/graphmodifier.cpp index a685b71b..a22ede2b 100644 --- a/tests/surfacetest/graphmodifier.cpp +++ b/tests/surfacetest/graphmodifier.cpp @@ -793,6 +793,30 @@ void GraphModifier::togglePolar(bool enabled) m_graph->setPolar(enabled); } +void GraphModifier::setCameraTargetX(int value) +{ + // Value is (-100, 100), normalize + m_cameraTarget.setX(float(value) / 100.0f); + m_graph->scene()->activeCamera()->setTarget(m_cameraTarget); + qDebug() << "m_cameraTarget:" << m_cameraTarget; +} + +void GraphModifier::setCameraTargetY(int value) +{ + // Value is (-100, 100), normalize + m_cameraTarget.setY(float(value) / 100.0f); + m_graph->scene()->activeCamera()->setTarget(m_cameraTarget); + qDebug() << "m_cameraTarget:" << m_cameraTarget; +} + +void GraphModifier::setCameraTargetZ(int value) +{ + // Value is (-100, 100), normalize + m_cameraTarget.setZ(float(value) / 100.0f); + m_graph->scene()->activeCamera()->setTarget(m_cameraTarget); + qDebug() << "m_cameraTarget:" << m_cameraTarget; +} + void GraphModifier::resetArrayAndSliders(QSurfaceDataArray *array, float minZ, float maxZ, float minX, float maxX) { m_axisMinSliderX->setValue(minX); diff --git a/tests/surfacetest/graphmodifier.h b/tests/surfacetest/graphmodifier.h index 62145d45..f461f022 100644 --- a/tests/surfacetest/graphmodifier.h +++ b/tests/surfacetest/graphmodifier.h @@ -133,6 +133,9 @@ public slots: void toggleXAscending(bool enabled); void toggleZAscending(bool enabled); void togglePolar(bool enabled); + void setCameraTargetX(int value); + void setCameraTargetY(int value); + void setCameraTargetZ(int value); private: void fillSeries(); @@ -186,6 +189,7 @@ private: float m_multiSampleOffsetX[4]; float m_multiSampleOffsetZ[4]; QSurfaceDataArray m_massiveTestCacheArray; + QVector3D m_cameraTarget; }; #endif diff --git a/tests/surfacetest/main.cpp b/tests/surfacetest/main.cpp index 3a7307ea..f89e6c50 100644 --- a/tests/surfacetest/main.cpp +++ b/tests/surfacetest/main.cpp @@ -46,8 +46,10 @@ int main(int argc, char *argv[]) QHBoxLayout *hLayout = new QHBoxLayout(widget); QVBoxLayout *vLayout = new QVBoxLayout(); QVBoxLayout *vLayout2 = new QVBoxLayout(); + QVBoxLayout *vLayout3 = new QVBoxLayout(); vLayout->setAlignment(Qt::AlignTop); vLayout2->setAlignment(Qt::AlignTop); + vLayout3->setAlignment(Qt::AlignTop); Q3DSurface *surfaceGraph = new Q3DSurface(); QSize screenSize = surfaceGraph->screen()->size(); @@ -66,6 +68,7 @@ int main(int argc, char *argv[]) hLayout->addWidget(container, 1); hLayout->addLayout(vLayout); hLayout->addLayout(vLayout2); + hLayout->addLayout(vLayout3); QCheckBox *smoothCB = new QCheckBox(widget); smoothCB->setText(QStringLiteral("Flat Surface")); @@ -406,6 +409,22 @@ int main(int argc, char *argv[]) surfaceTextureCB->setText(QStringLiteral("Map texture")); surfaceTextureCB->setChecked(false); + QSlider *cameraTargetSliderX = new QSlider(Qt::Horizontal, widget); + cameraTargetSliderX->setTickInterval(1); + cameraTargetSliderX->setMinimum(-100); + cameraTargetSliderX->setValue(0); + cameraTargetSliderX->setMaximum(100); + QSlider *cameraTargetSliderY = new QSlider(Qt::Horizontal, widget); + cameraTargetSliderY->setTickInterval(1); + cameraTargetSliderY->setMinimum(-100); + cameraTargetSliderY->setValue(0); + cameraTargetSliderY->setMaximum(100); + QSlider *cameraTargetSliderZ = new QSlider(Qt::Horizontal, widget); + cameraTargetSliderZ->setTickInterval(1); + cameraTargetSliderZ->setMinimum(-100); + cameraTargetSliderZ->setValue(0); + cameraTargetSliderZ->setMaximum(100); + // Add controls to the layout #ifdef MULTI_SERIES vLayout->addWidget(series1CB); @@ -433,7 +452,7 @@ int main(int argc, char *argv[]) vLayout->addWidget(surfaceGridS4CB); vLayout->addWidget(surfaceS4CB); vLayout->addWidget(series4VisibleCB); - vLayout->addWidget(surfaceTextureCB); + vLayout->addWidget(surfaceTextureCB, 1, Qt::AlignTop); #endif #ifndef MULTI_SERIES vLayout->addWidget(new QLabel(QStringLiteral("Select surface sample"))); @@ -443,59 +462,65 @@ int main(int argc, char *argv[]) vLayout->addWidget(new QLabel(QStringLiteral("Adjust sample count"))); vLayout->addWidget(gridSlidersLockCB); vLayout->addWidget(gridSliderX); - vLayout->addWidget(gridSliderZ); + vLayout->addWidget(gridSliderZ, 1, Qt::AlignTop); #endif - vLayout->addWidget(new QLabel(QStringLiteral("Adjust vertical aspect ratio"))); - vLayout->addWidget(aspectRatioSlider); - vLayout->addWidget(new QLabel(QStringLiteral("Adjust horizontal aspect ratio"))); - vLayout->addWidget(horizontalAspectRatioSlider); - vLayout->addWidget(new QLabel(QStringLiteral("Adjust axis range"))); - vLayout->addWidget(axisRangeSliderX); - vLayout->addWidget(axisRangeSliderY); - vLayout->addWidget(axisRangeSliderZ); - vLayout->addWidget(new QLabel(QStringLiteral("Adjust axis minimum"))); - vLayout->addWidget(axisMinSliderX); - vLayout->addWidget(axisMinSliderY); - vLayout->addWidget(axisMinSliderZ); - vLayout->addWidget(xAscendingCB); - vLayout->addWidget(zAscendingCB); - vLayout->addWidget(polarCB); + + vLayout2->addWidget(new QLabel(QStringLiteral("Adjust vertical aspect ratio"))); + vLayout2->addWidget(aspectRatioSlider); + vLayout2->addWidget(new QLabel(QStringLiteral("Adjust horizontal aspect ratio"))); + vLayout2->addWidget(horizontalAspectRatioSlider); + vLayout2->addWidget(new QLabel(QStringLiteral("Adjust axis range"))); + vLayout2->addWidget(axisRangeSliderX); + vLayout2->addWidget(axisRangeSliderY); + vLayout2->addWidget(axisRangeSliderZ); + vLayout2->addWidget(new QLabel(QStringLiteral("Adjust axis minimum"))); + vLayout2->addWidget(axisMinSliderX); + vLayout2->addWidget(axisMinSliderY); + vLayout2->addWidget(axisMinSliderZ); + vLayout2->addWidget(xAscendingCB); + vLayout2->addWidget(zAscendingCB); + vLayout2->addWidget(polarCB); vLayout2->addWidget(new QLabel(QStringLiteral("Change font"))); vLayout2->addWidget(fontList); - vLayout2->addWidget(labelButton); - vLayout2->addWidget(meshButton); vLayout2->addWidget(new QLabel(QStringLiteral("Change theme"))); vLayout2->addWidget(themeList); vLayout2->addWidget(new QLabel(QStringLiteral("Adjust shadow quality"))); vLayout2->addWidget(shadowQuality); vLayout2->addWidget(new QLabel(QStringLiteral("Selection Mode"))); vLayout2->addWidget(selectionMode); + vLayout2->addWidget(new QLabel(QStringLiteral("Camera target"))); + vLayout2->addWidget(cameraTargetSliderX); + vLayout2->addWidget(cameraTargetSliderY); + vLayout2->addWidget(cameraTargetSliderZ, 1, Qt::AlignTop); + + vLayout3->addWidget(labelButton); + vLayout3->addWidget(meshButton); #ifndef MULTI_SERIES - vLayout2->addWidget(selectButton); - vLayout2->addWidget(selectionInfoLabel); - vLayout2->addWidget(flipViewsButton); + vLayout3->addWidget(selectButton); + vLayout3->addWidget(selectionInfoLabel); + vLayout3->addWidget(flipViewsButton); #endif - vLayout2->addWidget(colorPB); - vLayout2->addWidget(changeRowButton); - vLayout2->addWidget(changeRowsButton); - vLayout2->addWidget(changeMultipleRowsButton); - vLayout2->addWidget(changeItemButton); - vLayout2->addWidget(changeMultipleItemButton); - vLayout2->addWidget(addRowButton); - vLayout2->addWidget(addRowsButton); - vLayout2->addWidget(insertRowButton); - vLayout2->addWidget(insertRowsButton); - vLayout2->addWidget(removeRowButton); - vLayout2->addWidget(resetArrayButton); - vLayout2->addWidget(resetArrayEmptyButton); - vLayout2->addWidget(massiveDataTestButton); - vLayout2->addWidget(testReverseButton); - vLayout2->addWidget(testDataOrderingButton); - vLayout2->addWidget(axisTitlesVisibleCB); - vLayout2->addWidget(axisTitlesFixedCB); - vLayout2->addWidget(new QLabel(QStringLiteral("Axis label rotation"))); - vLayout2->addWidget(axisLabelRotationSlider, 1, Qt::AlignTop); + vLayout3->addWidget(colorPB); + vLayout3->addWidget(changeRowButton); + vLayout3->addWidget(changeRowsButton); + vLayout3->addWidget(changeMultipleRowsButton); + vLayout3->addWidget(changeItemButton); + vLayout3->addWidget(changeMultipleItemButton); + vLayout3->addWidget(addRowButton); + vLayout3->addWidget(addRowsButton); + vLayout3->addWidget(insertRowButton); + vLayout3->addWidget(insertRowsButton); + vLayout3->addWidget(removeRowButton); + vLayout3->addWidget(resetArrayButton); + vLayout3->addWidget(resetArrayEmptyButton); + vLayout3->addWidget(massiveDataTestButton); + vLayout3->addWidget(testReverseButton); + vLayout3->addWidget(testDataOrderingButton); + vLayout3->addWidget(axisTitlesVisibleCB); + vLayout3->addWidget(axisTitlesFixedCB); + vLayout3->addWidget(new QLabel(QStringLiteral("Axis label rotation"))); + vLayout3->addWidget(axisLabelRotationSlider, 1, Qt::AlignTop); widget->show(); @@ -676,6 +701,12 @@ int main(int argc, char *argv[]) modifier, &GraphModifier::setHorizontalAspectRatio); QObject::connect(surfaceTextureCB, &QCheckBox::stateChanged, modifier, &GraphModifier::setSurfaceTexture); + QObject::connect(cameraTargetSliderX, &QSlider::valueChanged, modifier, + &GraphModifier::setCameraTargetX); + QObject::connect(cameraTargetSliderY, &QSlider::valueChanged, modifier, + &GraphModifier::setCameraTargetY); + QObject::connect(cameraTargetSliderZ, &QSlider::valueChanged, modifier, + &GraphModifier::setCameraTargetZ); #ifdef MULTI_SERIES modifier->setSeries1CB(series1CB); -- cgit v1.2.3