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();
}