diff options
Diffstat (limited to 'examples/datavisualization/rotations/main.cpp')
-rw-r--r-- | examples/datavisualization/rotations/main.cpp | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/examples/datavisualization/rotations/main.cpp b/examples/datavisualization/rotations/main.cpp new file mode 100644 index 00000000..3ddb7b55 --- /dev/null +++ b/examples/datavisualization/rotations/main.cpp @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the QtDataVisualization module. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +#include "scatterdatamodifier.h" + +#include <QApplication> +#include <QWidget> +#include <QHBoxLayout> +#include <QVBoxLayout> +#include <QPushButton> +#include <QScreen> +#include <QSlider> +#include <QLabel> + +int main(int argc, char **argv) +{ + QApplication app(argc, argv); + Q3DScatter *graph = new Q3DScatter(); + QWidget *container = QWidget::createWindowContainer(graph); + + QSize screenSize = graph->screen()->size(); + container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 1.5)); + container->setMaximumSize(screenSize); + container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + container->setFocusPolicy(Qt::StrongFocus); + + QWidget *widget = new QWidget; + QHBoxLayout *hLayout = new QHBoxLayout(widget); + QVBoxLayout *vLayout = new QVBoxLayout(); + hLayout->addWidget(container, 1); + hLayout->addLayout(vLayout); + + widget->setWindowTitle(QStringLiteral("Item rotations example - Magnetic field of the sun")); + + QPushButton *toggleRotationButton = new QPushButton(widget); + toggleRotationButton->setText(QStringLiteral("Toggle animation")); + QPushButton *toggleSunButton = new QPushButton(widget); + toggleSunButton->setText(QStringLiteral("Toggle Sun")); + + QSlider *fieldLinesSlider = new QSlider(Qt::Horizontal, widget); + fieldLinesSlider->setTickInterval(1); + fieldLinesSlider->setMinimum(1); + fieldLinesSlider->setValue(12); + fieldLinesSlider->setMaximum(128); + + QSlider *arrowsSlider = new QSlider(Qt::Horizontal, widget); + arrowsSlider->setTickInterval(1); + arrowsSlider->setMinimum(8); + arrowsSlider->setValue(16); + arrowsSlider->setMaximum(32); + + vLayout->addWidget(toggleRotationButton); + vLayout->addWidget(toggleSunButton); + vLayout->addWidget(new QLabel(QStringLiteral("Field Lines (1 - 128):"))); + vLayout->addWidget(fieldLinesSlider); + vLayout->addWidget(new QLabel(QStringLiteral("Arrows per line (8 - 32):"))); + vLayout->addWidget(arrowsSlider, 1, Qt::AlignTop); + + ScatterDataModifier *modifier = new ScatterDataModifier(graph); + + QObject::connect(toggleRotationButton, &QPushButton::clicked, modifier, + &ScatterDataModifier::toggleRotation); + QObject::connect(toggleSunButton, &QPushButton::clicked, modifier, + &ScatterDataModifier::toggleSun); + QObject::connect(fieldLinesSlider, &QSlider::valueChanged, modifier, + &ScatterDataModifier::setFieldLines); + QObject::connect(arrowsSlider, &QSlider::valueChanged, modifier, + &ScatterDataModifier::setArrowsPerLine); + + widget->show(); + return app.exec(); +} |