#include "qchartview.h" #include "qchart.h" #include #include #include #include #include QTCOMMERCIALCHART_BEGIN_NAMESPACE QChartView::QChartView(QWidget *parent) : QGraphicsView(parent), m_scene(new QGraphicsScene()), m_chart(new QChart()), m_rubberBand(0), m_showRubberBand(false) { setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setScene(m_scene); m_chart->setMargin(50); m_scene->addItem(m_chart); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); } QChartView::~QChartView() { } void QChartView::resizeEvent(QResizeEvent *event) { m_scene->setSceneRect(0,0,size().width(),size().height()); m_chart->setSize(size()); QWidget::resizeEvent(event); } void QChartView::addSeries(QChartSeries* series) { m_chart->addSeries(series); } QChartSeries* QChartView::createSeries(QChartSeries::QChartSeriesType type) { return m_chart->createSeries(type); } void QChartView::mousePressEvent(QMouseEvent *event) { int margin = m_chart->margin(); QRect rect(margin,margin,width()-2*margin,height()-2*margin); m_origin = event->pos(); if (!rect.contains(m_origin)) return; if (!m_rubberBand) m_rubberBand = new QRubberBand(QRubberBand::Rectangle, this); m_rubberBand->setGeometry(QRect(m_origin, QSize())); m_showRubberBand=true; m_rubberBand->show(); } void QChartView::mouseMoveEvent(QMouseEvent *event) { if(m_showRubberBand) m_rubberBand->setGeometry(QRect(m_origin, event->pos()).normalized()); } void QChartView::mouseReleaseEvent(QMouseEvent *event) { if(m_showRubberBand) { m_rubberBand->hide(); m_showRubberBand=false; } } QTCOMMERCIALCHART_END_NAMESPACE