File indexing completed on 2024-05-26 04:23:44
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 <KChartGridAttributes> 0015 0016 #include <QDebug> 0017 #include <QPainter> 0018 0019 using namespace KChart; 0020 0021 MainWindow::MainWindow( QWidget* parent ) : 0022 QWidget( parent ) 0023 { 0024 setupUi( this ); 0025 0026 QHBoxLayout* chartLayout = new QHBoxLayout( chartFrame ); 0027 m_chart = new Chart(); 0028 chartLayout->addWidget( m_chart ); 0029 0030 // Use the new Layout-system. 0031 m_chart->setUseNewLayoutSystem(true); 0032 0033 m_model.loadFromCSV( ":/data" ); 0034 m_model2.loadFromCSV( ":/data2" ); 0035 0036 // Set up the diagram 0037 m_lines = new LineDiagram(); 0038 m_lines->setModel( &m_model ); 0039 0040 m_lines2 = new LineDiagram(); 0041 m_lines2->setModel( &m_model2 ); 0042 0043 // The by default built-in plane. 0044 KChart::CartesianCoordinatePlane* plane1 = static_cast< KChart::CartesianCoordinatePlane* >( m_chart->coordinatePlane() ); 0045 0046 // We call this "plane2" just for remembering, that we use it 0047 // in addition to the plane, that's built-in by default. 0048 plane2 = new CartesianCoordinatePlane( m_chart ); 0049 0050 CartesianAxis *xAxis = new CartesianAxis( m_lines ); 0051 CartesianAxis *yAxis = new CartesianAxis( m_lines ); 0052 CartesianAxis *yAxis2 = new CartesianAxis( m_lines2 ); 0053 0054 QList<qreal> ticks; 0055 ticks.append( 5 ); 0056 ticks.append( 10 ); 0057 ticks.append( 15 ); 0058 xAxis->setCustomTicks(ticks); 0059 0060 QMap< qreal, QString > annotations; 0061 annotations[ 5 ] = "Five"; 0062 annotations[ 10 ] = "Ten"; 0063 annotations[ 15 ] = "Fifteen"; 0064 xAxis->setAnnotations( annotations ); 0065 0066 xAxis->setPosition( KChart::CartesianAxis::Top ); 0067 yAxis->setPosition( KChart::CartesianAxis::Left ); 0068 yAxis2->setPosition( KChart::CartesianAxis::Right ); 0069 0070 m_lines->addAxis( xAxis ); // shared axis, add to m_lines 0071 m_lines->addAxis( yAxis ); 0072 m_lines2->addAxis( xAxis ); // and add to m_lines2 0073 m_lines2->addAxis( yAxis2 ); 0074 0075 m_chart->coordinatePlane()->replaceDiagram( m_lines ); 0076 m_chart->setGlobalLeading( 20, 20, 20, 20 ); 0077 plane2->replaceDiagram( m_lines2 ); 0078 m_chart->addCoordinatePlane( plane2 ); 0079 0080 // Enable the annotations in both planes. 0081 KChart::GridAttributes grid1 = plane1->gridAttributes( Qt::Horizontal ); 0082 grid1.setLinesOnAnnotations( true ); 0083 plane1->setGridAttributes( Qt::Horizontal, grid1 ); 0084 KChart::GridAttributes grid2 = plane2->gridAttributes( Qt::Horizontal ); 0085 grid2.setLinesOnAnnotations( true ); 0086 plane2->setGridAttributes( Qt::Horizontal, grid2 ); 0087 m_chart->update(); 0088 }