qchartview.cpp
81 lines
| 1.9 KiB
| text/x-c
|
CppLexer
/ src / qchartview.cpp
|
r58 | #include "qchartview.h" | ||
#include "qchart.h" | ||||
#include <QGraphicsView> | ||||
#include <QGraphicsScene> | ||||
#include <QRubberBand> | ||||
#include <QResizeEvent> | ||||
#include <QDebug> | ||||
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); | ||||
} | ||||
|
r61 | QChartSeries* QChartView::createSeries(QChartSeries::QChartSeriesType type) | ||
|
r58 | { | ||
|
r61 | return m_chart->createSeries(type); | ||
|
r58 | } | ||
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 | ||||