#include "mychart.h"
MyChart::MyChart(QWidget *parent) : QGraphicsView(parent)
{
initWidget();
}
MyChart::~MyChart()
{
}
void MyChart::setTitle(QString path, QString name)
{
if(!path.isEmpty())
wt_top->setImage(path);
wt_top->setName(name);
}
void MyChart::setGeometrys(qreal x, qreal y, qreal w, qreal h)
{
m_grapScene->setSceneRect(x, y, w, h);
this->setSceneRect(x, y, w, h);
m_chart->setGeometry(x, y, w, h);
wt_top->setGeometry(9, 0, w - 18, 20);
}
void MyChart::setStyle(QString style)
{
this->setStyleSheet(style);
}
void MyChart::setAxisX(QAbstractAxis *axis, QAbstractSeries *series)
{
m_chart->setAxisX(axis, series);
}
void MyChart::setAxisY(QAbstractAxis *axis, QAbstractSeries *series)
{
m_chart->setAxisY(axis, series);
}
void MyChart::addSeries(QAbstractSeries *series)
{
m_chart->addSeries(series);
}
QLegend *MyChart::Legend()
{
return m_chart->legend();
}
void MyChart::initWidget()
{
m_grapScene = new QGraphicsScene();
this->setScene(m_grapScene);
wt_top = new CreateTopWidget();
m_chart = new QChart();
QBrush brush(QColor(8, 21, 66));
m_chart->setBackgroundBrush(brush);
m_chart->setAnimationOptions(QChart::SeriesAnimations);
m_chart->createDefaultAxes();
QLegend *le = m_chart->legend();
m_grapScene->addItem(m_chart);
m_grapScene->addWidget(wt_top);
wt_top->setGrapScene(le);
}
/**************CreateTopWidget******************/
CreateTopWidget::CreateTopWidget(QWidget *parent) : QWidget(parent)
, m_width(0)
{
initWidget();
}
CreateTopWidget::~CreateTopWidget()
{
}
void CreateTopWidget::setGrapScene(QLegend *le)
{
m_scene->addItem(le);
}
void CreateTopWidget::setImage(QString name)
{
QImage image;
image.load(name);
m_width = image.width();
QImage result = image.scaled(800, 500).scaled(m_width, image.height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
lb_img->setPixmap(QPixmap::fromImage(result));
lb_img->show();
}
void CreateTopWidget::setName(QString name)
{
QFont ft;
ft.setPointSize(12);
ft.setWeight(150);
lb_name->setFont(ft);
lb_name->setStyleSheet("color:white;");
lb_name->setText(name);
int index = m_width + name.size();
setSceneRect(index);
}
void CreateTopWidget::setSceneRect(int index)
{
m_grapView->setSceneRect(200 + index, 40, 100, 10);
}
void CreateTopWidget::initWidget()
{
setStyleSheet("background-color:rgb(8, 21, 66);");
m_scene = new QGraphicsScene();
m_scene->setSceneRect(0, 0, 100, 10);
m_grapView = new QGraphicsView();
m_grapView->setStyleSheet("border: 3px solid rgb(8, 21, 66);");
m_grapView->setScene(m_scene);
QHBoxLayout * lay = new QHBoxLayout();
lay->setContentsMargins(9, 0, 0, 0);
lay->setSpacing(0);
setLayout(lay);
QWidget * widget = new QWidget();
QHBoxLayout* tblay = new QHBoxLayout();
tblay->setContentsMargins(0, 0, 0, 0);
tblay->setSpacing(20);
widget->setLayout(tblay);
lb_img = new QLabel();
tblay->addWidget(lb_img);
lb_name = new QLabel();
tblay->addWidget(lb_name);
QSpacerItem* spacer = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
tblay->addSpacerItem(spacer);
QHBoxLayout* btnLay = new QHBoxLayout();
btnLay->setContentsMargins(0, 0, 0, 0);
QWidget* wt_title = new QWidget();
wt_title->setGeometry(0, 0, 100, 10);
btnLay->addWidget(wt_title);
tblay->addLayout(btnLay);
QHBoxLayout* hblay = new QHBoxLayout();
hblay->setContentsMargins(0, 0, 0, 0);
hblay->setSpacing(0);
wt_title->setLayout(hblay);
hblay->addWidget(m_grapView);
lay->addWidget(widget);
}