File indexing completed on 2024-05-12 04:20:46
0001 /** 0002 * SPDX-FileCopyrightText: 2001-2015 Klaralvdalens Datakonsult AB. All rights reserved. 0003 * 0004 * This file is part of the KD Chart library. 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #include "mainwindow.h" 0010 0011 #include <KChartChart> 0012 #include <KChartAbstractCoordinatePlane> 0013 #include <KChartLineDiagram> 0014 #include <KChartBarDiagram> 0015 0016 #include <QDebug> 0017 #include <QPainter> 0018 0019 using namespace KChart; 0020 0021 #define USE_ROOTINDEX 1 0022 0023 MainWindow::MainWindow( QWidget* parent ) : 0024 QWidget( parent ) 0025 { 0026 setupUi( this ); 0027 0028 QHBoxLayout* chartLayout = new QHBoxLayout( chartFrame ); 0029 m_chart = new Chart(); 0030 chartLayout->addWidget( m_chart ); 0031 0032 #if USE_ROOTINDEX 0033 m_model.insertRows( 0,2, QModelIndex() ); 0034 m_model.insertColumns( 0,1, QModelIndex() ); 0035 QModelIndex idx1 = m_model.index( 0,0,QModelIndex() ); 0036 QModelIndex idx2 = m_model.index( 1,0,QModelIndex() ); 0037 0038 m_model.setData( idx1, 3.14 ); 0039 m_model.setData( idx2, 2*3.14 ); 0040 0041 m_model.insertRows( 0,5, idx1 ); 0042 m_model.insertColumns( 0,5, idx1 ); 0043 0044 for ( int i = 0; i < 5; ++i ) { 0045 for ( int j = 0; j < 5; ++j ) { 0046 m_model.setData( m_model.index( i,j,idx1), (qreal)i*j ); 0047 } 0048 } 0049 0050 m_model.insertRows( 0,2, idx2 ); 0051 m_model.insertColumns( 0,2, idx2 ); 0052 0053 for ( int i = 0; i < 2; ++i ) { 0054 for ( int j = 0; j < 2; ++j ) { 0055 m_model.setData( m_model.index( i,j,idx2), 10.*(i+1.)/(j+1.) ); 0056 } 0057 } 0058 #else 0059 QModelIndex idx1 = QModelIndex(); 0060 m_model.insertRows( 0,5, idx1 ); 0061 m_model.insertColumns( 0,5, idx1 ); 0062 0063 for ( int i = 0; i < 5; ++i ) { 0064 for ( int j = 0; j < 5; ++j ) { 0065 m_model.setData( m_model.index( i,j,idx1), (qreal)i*j ); 0066 } 0067 } 0068 QModelIndex idx2 = idx1; 0069 0070 m_model2.insertRows( 0,2, idx2 ); 0071 m_model2.insertColumns( 0,2, idx2 ); 0072 0073 for ( int i = 0; i < 2; ++i ) { 0074 for ( int j = 0; j < 2; ++j ) { 0075 m_model2.setData( m_model2.index( i,j,idx2), 10.*(i+1.)/(j+1.) ); 0076 } 0077 } 0078 0079 #endif 0080 0081 // Set up the diagram 0082 m_lines = new LineDiagram(); 0083 m_lines->setModel( &m_model ); 0084 #if USE_ROOTINDEX 0085 m_lines->setRootIndex(idx1); 0086 #endif 0087 0088 m_bars = new BarDiagram(); 0089 #if USE_ROOTINDEX 0090 m_bars->setModel( &m_model ); 0091 m_bars->setRootIndex(idx2); 0092 #else 0093 m_bars->setModel( &m_model2 ); 0094 #endif 0095 0096 plane = new CartesianCoordinatePlane( m_chart ); 0097 0098 CartesianAxis *xAxis = new CartesianAxis( m_lines ); 0099 CartesianAxis *yAxis = new CartesianAxis ( m_lines ); 0100 CartesianAxis *yAxis3 = new CartesianAxis ( m_lines ); 0101 xAxis->setPosition ( KChart::CartesianAxis::Bottom ); 0102 yAxis->setPosition ( KChart::CartesianAxis::Left ); 0103 yAxis3->setPosition ( KChart::CartesianAxis::Left ); 0104 0105 CartesianAxis *yAxis2 = new CartesianAxis ( m_bars ); 0106 yAxis2->setPosition ( KChart::CartesianAxis::Right ); 0107 0108 // explicitly add it to the second diagram, we want to share it 0109 m_bars->addAxis( xAxis ); 0110 0111 m_chart->coordinatePlane()->replaceDiagram( m_lines ); 0112 plane->replaceDiagram( m_bars ); 0113 // We want both planes to use the same space. 0114 plane->setReferenceCoordinatePlane( m_chart->coordinatePlane() ); 0115 m_chart->addCoordinatePlane( plane/*, 1*/); 0116 }