main.cpp 范例文件
scatter/main.cpp
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Data Visualization module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "scatterdatamodifier.h"
#include <QtWidgets/QApplication>
#include <QtWidgets/QWidget>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QCheckBox>
#include <QtWidgets/QComboBox>
#include <QtWidgets/QFontComboBox>
#include <QtWidgets/QLabel>
#include <QtWidgets/QMessageBox>
#include <QtGui/QScreen>
#include <QtGui/QFontDatabase>
int main(int argc, char * * argv)
{
QApplication app(argc, argv);
Q3DScatter * graph = new Q3DScatter ();
QWidget * container = QWidget :: createWindowContainer(graph);
if (! graph- > hasContext()) {
QMessageBox msgBox;
msgBox. setText("Couldn't initialize the OpenGL context." );
msgBox. exec();
return - 1 ;
}
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 ("A Cosine Wave" ));
QComboBox * themeList = new QComboBox (widget);
themeList- > addItem(QStringLiteral ("Qt" ));
themeList- > addItem(QStringLiteral ("Primary Colors" ));
themeList- > addItem(QStringLiteral ("Digia" ));
themeList- > addItem(QStringLiteral ("Stone Moss" ));
themeList- > addItem(QStringLiteral ("Army Blue" ));
themeList- > addItem(QStringLiteral ("Retro" ));
themeList- > addItem(QStringLiteral ("Ebony" ));
themeList- > addItem(QStringLiteral ("Isabelle" ));
themeList- > setCurrentIndex(6 );
QPushButton * labelButton = new QPushButton (widget);
labelButton- > setText(QStringLiteral ("Change label style" ));
QCheckBox * smoothCheckBox = new QCheckBox (widget);
smoothCheckBox- > setText(QStringLiteral ("Smooth dots" ));
smoothCheckBox- > setChecked(true );
QComboBox * itemStyleList = new QComboBox (widget);
itemStyleList- > addItem(QStringLiteral ("Sphere" ), int (QAbstract3DSeries:: MeshSphere));
itemStyleList- > addItem(QStringLiteral ("Cube" ), int (QAbstract3DSeries:: MeshCube));
itemStyleList- > addItem(QStringLiteral ("Minimal" ), int (QAbstract3DSeries:: MeshMinimal));
itemStyleList- > addItem(QStringLiteral ("Point" ), int (QAbstract3DSeries:: MeshPoint));
itemStyleList- > setCurrentIndex(0 );
QPushButton * cameraButton = new QPushButton (widget);
cameraButton- > setText(QStringLiteral ("Change camera preset" ));
QPushButton * itemCountButton = new QPushButton (widget);
itemCountButton- > setText(QStringLiteral ("Toggle item count" ));
QCheckBox * backgroundCheckBox = new QCheckBox (widget);
backgroundCheckBox- > setText(QStringLiteral ("Show background" ));
backgroundCheckBox- > setChecked(true );
QCheckBox * gridCheckBox = new QCheckBox (widget);
gridCheckBox- > setText(QStringLiteral ("Show grid" ));
gridCheckBox- > setChecked(true );
QComboBox * shadowQuality = new QComboBox (widget);
shadowQuality- > addItem(QStringLiteral ("None" ));
shadowQuality- > addItem(QStringLiteral ("Low" ));
shadowQuality- > addItem(QStringLiteral ("Medium" ));
shadowQuality- > addItem(QStringLiteral ("High" ));
shadowQuality- > addItem(QStringLiteral ("Low Soft" ));
shadowQuality- > addItem(QStringLiteral ("Medium Soft" ));
shadowQuality- > addItem(QStringLiteral ("High Soft" ));
shadowQuality- > setCurrentIndex(4 );
QFontComboBox * fontList = new QFontComboBox (widget);
fontList- > setCurrentFont(QFont ("Arial" ));
vLayout- > addWidget(labelButton, 0 , Qt :: AlignTop);
vLayout- > addWidget(cameraButton, 0 , Qt :: AlignTop);
vLayout- > addWidget(itemCountButton, 0 , Qt :: AlignTop);
vLayout- > addWidget(backgroundCheckBox);
vLayout- > addWidget(gridCheckBox);
vLayout- > addWidget(smoothCheckBox, 0 , Qt :: AlignTop);
vLayout- > addWidget(new QLabel (QStringLiteral ("Change dot style" )));
vLayout- > addWidget(itemStyleList);
vLayout- > addWidget(new QLabel (QStringLiteral ("Change theme" )));
vLayout- > addWidget(themeList);
vLayout- > addWidget(new QLabel (QStringLiteral ("Adjust shadow quality" )));
vLayout- > addWidget(shadowQuality);
vLayout- > addWidget(new QLabel (QStringLiteral ("Change font" )));
vLayout- > addWidget(fontList, 1 , Qt :: AlignTop);
ScatterDataModifier * modifier = new ScatterDataModifier(graph);
QObject :: connect(cameraButton, & QPushButton :: clicked, modifier,
& ScatterDataModifier:: changePresetCamera);
QObject :: connect(labelButton, & QPushButton :: clicked, modifier,
& ScatterDataModifier:: changeLabelStyle);
QObject :: connect(itemCountButton, & QPushButton :: clicked, modifier,
& ScatterDataModifier:: toggleItemCount);
QObject :: connect(backgroundCheckBox, & QCheckBox :: stateChanged, modifier,
& ScatterDataModifier:: setBackgroundEnabled);
QObject :: connect(gridCheckBox, & QCheckBox :: stateChanged, modifier,
& ScatterDataModifier:: setGridEnabled);
QObject :: connect(smoothCheckBox, & QCheckBox :: stateChanged, modifier,
& ScatterDataModifier:: setSmoothDots);
QObject :: connect(modifier, & ScatterDataModifier:: backgroundEnabledChanged,
backgroundCheckBox, & QCheckBox :: setChecked);
QObject :: connect(modifier, & ScatterDataModifier:: gridEnabledChanged,
gridCheckBox, & QCheckBox :: setChecked);
QObject :: connect(itemStyleList, SIGNAL(currentIndexChanged(int )), modifier,
SLOT(changeStyle(int )));
QObject :: connect(themeList, SIGNAL(currentIndexChanged(int )), modifier,
SLOT(changeTheme(int )));
QObject :: connect(shadowQuality, SIGNAL(currentIndexChanged(int )), modifier,
SLOT(changeShadowQuality(int )));
QObject :: connect(modifier, & ScatterDataModifier:: shadowQualityChanged, shadowQuality,
& QComboBox :: setCurrentIndex);
QObject :: connect(graph, & Q3DScatter :: shadowQualityChanged, modifier,
& ScatterDataModifier:: shadowQualityUpdatedByVisual);
QObject :: connect(fontList, & QFontComboBox :: currentFontChanged, modifier,
& ScatterDataModifier:: changeFont);
QObject :: connect(modifier, & ScatterDataModifier:: fontChanged, fontList,
& QFontComboBox :: setCurrentFont);
widget- > show();
return app. exec();
}