#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
initline();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::initline()
{
m_chart = new QChart();
m_chart->setAnimationOptions(QChart::SeriesAnimations);
m_lineSeries = new QLineSeries(m_chart);
m_lineSeries->setPen(QPen(Qt::lightGray,2,Qt::SolidLine));
m_lineSeries->setColor(QColor(248, 167, 0));
m_lineSeries->setName("张三");
// m_lineSeries->setPointLabelsVisible(true);
m_chart->addSeries(m_lineSeries);
// m_chart->addSeries(m_barSeries);
m_chart->setTitle("xxxx");
*m_lineSeries << QPointF(0, 5) << QPointF(3, 0) << QPointF(7, 6) << QPointF(9, 7) << QPointF(10, 6);
QStringList list;
list<<"0"<<"1"<<"2"<<"3"<<"4"<<"5"<<"6"<<"7"<<"8"<<"9"<<"10"<<"11"<<"12"<<"13";
m_axis = new QBarCategoryAxis();
m_axis->append(list);//
m_chart->createDefaultAxes();
// m_chart->setAcceptHoverEvents(true);
m_chart->setAcceptTouchEvents(true);
m_chart->setAxisX(m_axis, m_lineSeries);
m_axisY = new QValueAxis;
m_axisY->setRange(0, 10);
// m_axisY->setLabelFormat("%u"); //设置刻度的格式
// m_axisY->setGridLineVisible(true);
m_axisY->setTickCount(10); //设置多少格
m_axisY->setMinorTickCount(5); //设置每格小刻度线的数目
m_chart->setAxisY(m_axisY, m_lineSeries);
m_chart->legend()->setVisible(true);
m_chart->legend()->setAlignment(Qt::AlignBottom);
m_chartView = new QChartView(m_chart);
m_chartView->setRenderHint(QPainter::Antialiasing);
m_chartView->chart()->setTheme(QChart::ChartThemeBrownSand);
QPalette pal = window()->palette();
pal.setColor(QPalette::Window, QRgb(0x9e8965));
pal.setColor(QPalette::WindowText, QRgb(0x404044));
window()->setPalette(pal);
ui->widget->layout()->addWidget(m_chartView);
m_list<<2<<3<<5<<4;
connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(sltpushButton_2()));
connect(ui->pushButton_3, SIGNAL(clicked()), this, SLOT(sltpushButton_3()));
connect(m_axis, SIGNAL(categoriesChanged()), this, SLOT(sltCategoriesChanged()));
markers();
}
void MainWindow::markers()
{
foreach(QLegendMarker* pLegendMarker, m_chart->legend()->markers())
{
connect(pLegendMarker, SIGNAL(hovered(bool)), this,SLOT(sltHandleMarkerClicked(bool)));
}
}
void MainWindow::sltpushButton()
{
}
void MainWindow::sltpushButton_2()
{
m_axis->clear();
}
void MainWindow::sltpushButton_3()
{
m_lineSeries->setName("李四");
}
void MainWindow::sltCategoriesChanged()
{
m_lineSeries->clear();
for(int i = 0 ; i<m_list.count(); i++)
{
m_lineSeries->append(i,m_list.at(i));
}
QStringList categories;
categories << "A" << "B" << "C"<< "D" << "E" << "F";
m_axis->append(categories);//
}
void MainWindow::sltHandleMarkerClicked(bool status)
{
QLegendMarker* poLegendMarker = qobject_cast<QLegendMarker*> (sender());
switch (poLegendMarker->type())
{
case QLegendMarker::LegendMarkerTypeXY:
{
QLineSeries* LineSeries = dynamic_cast<QLineSeries*>(poLegendMarker->series());
poLegendMarker->setVisible(true);
if(status)
{
m_color = LineSeries->color();
LineSeries->setColor(QColor(255,0,0));
}
else{
LineSeries->setColor(m_color);
LineSeries->chart()->legend()->setColor(m_color);
}
break;
}
default:
{
qDebug() << "Unknown type";
break;
}
}
}