使用QChart需要在*.pro中添加


QT += charts 在*.h文件中添加使用Qt中预先定义好的宏:


[cpp] view plain copy

QT_CHARTS_BEGIN_NAMESPACE class QChartView; class QChart;
QT_CHARTS_END_NAMESPACE QT_CHARTS_USE_NAMESPACE 或者使用




* using namespace QtCharts  柱状图: mainwindow.h




#include <QMainWindow> #include <QDebug> #include <QWidget> #include
<QtCharts/QChartView> //#include <QtCharts/QPieSeries> //#include
<QtCharts/QPieSlice> //#include <QtGui/QResizeEvent> // #include
<QtWidgets/QGraphicsScene> #include <QtCharts/QChart> #include
<QtCharts/QLineSeries> // #include <QtCharts/QSplineSeries> // #include
<QtWidgets/QGraphicsTextItem> #include <QBarCategoryAxis> #include <QValueAxis>
#include <QBarSeries> #include <QBarSet> #include <QDebug>
QT_CHARTS_BEGIN_NAMESPACE class QChartView; class QChart;
QT_CHARTS_END_NAMESPACE QT_CHARTS_USE_NAMESPACE namespace Ui { class MainWindow;
} class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(
QWidget *parent = 0); ~MainWindow(); private: void initChart(); private slots:
void sltpushButton(); void sltpushButton_2(); void sltpushButton_3(); void
sltCategoriesChanged(); private: Ui::MainWindow *ui; QChart* m_typeChart;
QChartView* m_typeView; QBarCategoryAxis* m_typeAxis; QValueAxis* m_typeAxisY;
QBarSeries* m_barSeries; QBarSet* m_barSet; };


 mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(
QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(
this); initChart(); } MainWindow::~MainWindow() { delete ui; } void MainWindow
::initChart() { m_typeChart = new QChart(); m_typeChart->setAnimationOptions(
QChart::SeriesAnimations);//动画效果 m_barSet = new QBarSet("eg");//创建条,可以创建多个
m_barSet->setLabelColor(QColor(0,0,0)); m_barSeries = new QBarSeries(m_typeChart
); m_barSeries->setLabelsVisible(true);//判断是否在图柱上显示数值 m_barSeries
->setLabelsPosition(QAbstractBarSeries::LabelsOutsideEnd);//在柱上显示数值方式
m_typeChart->addSeries(m_barSeries); m_typeChart->setTitle("XXXX"); m_typeAxis =
new QBarCategoryAxis();//创建X轴 m_typeChart->createDefaultAxes(); m_typeChart
->setAcceptTouchEvents(true); m_typeChart->setAxisX(m_typeAxis, m_barSeries);
m_typeAxisY = new QValueAxis;//创建Y轴 m_typeAxisY->setRange(0, 10);//显示数值范围
m_typeAxisY->setTickCount(10); //设置多少格 // m_typeAxisY->setLabelFormat("%u");
//设置刻度的格式   // m_typeAxisY->setTitleText("AxisY"); //设置Y轴标题   //
m_typeAxisY->setGridLineVisible(true); //设置是否显示网格线 m_typeAxisY
->setMinorTickCount(5); //设置每格小刻度数目 m_typeChart->setAxisY(m_typeAxisY,
m_barSeries); m_typeChart->legend()->setVisible(true); m_typeChart
->legend()->setAlignment(Qt::AlignBottom); m_typeChart->legend()->hide();
m_typeView = new QChartView(); m_typeView->setChart(m_typeChart); m_typeView
->setRubberBand(QChartView::RectangleRubberBand);//拉伸效果 m_typeView
->setRenderHint(QPainter::Antialiasing); m_typeView->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_typeView);
sltpushButton(); connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT
(sltpushButton_2())); connect(ui->pushButton_3, SIGNAL(clicked()), this, SLOT
(sltpushButton_3())); connect(m_typeAxis, SIGNAL(categoriesChanged()), this,
SLOT(sltCategoriesChanged()));//QValueAxis改变是会触发信号 } void MainWindow
::sltpushButton() { *m_barSet << 1 << 2 << 3 << 4 << 5 << 6; m_barSeries
->append(m_barSet); QStringList categories; categories << "Feb" << "Mar" <<
"Apr" << "May" << "Jun" << "Jan"; m_typeAxis->append(categories);// } void
MainWindow::sltpushButton_2() { m_typeAxis->clear(); } /*****************
不适用触发信号barSeries不刷新 eg.sltpushButton_3*******************/ void MainWindow
::sltpushButton_3() { // m_typeAxis->clear(); // m_barSeries->clear(); //
m_barSet = new QBarSet("eg"); // m_barSet->setLabelColor(QColor(0,0,0)); //
*m_barSet << 3 << 4 << 5 << 6<< 1 << 2; // m_barSeries->append(m_barSet); //
QStringList categories; // categories << "A" << "B" << "C"<< "D" << "E" << "F";
// m_typeAxis->append(categories); } void MainWindow::sltCategoriesChanged() {
m_barSeries->clear();//因为下边会重新添加新的X轴所以会触发两次因此需要清空QBarSeries m_barSet = new
QBarSet("eg");//需要重新创建一个柱 m_barSet->setLabelColor(QColor(0,0,0)); *m_barSet<< 2
<< 3 << 4 << 5 << 6<<1; m_barSeries->append(m_barSet); QStringList categories;
categories << "1" << "2" << "3" << "4"<< "5"<< "6" ; m_typeAxis
->append(categories); }
代码下载http://download.csdn.net/download/u010304326/10227887


接线图结合散点图

mainwindow.h



#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include
<QtCharts/QChartView> //#include <QtCharts/QPieSeries> //#include
<QtCharts/QPieSlice> //#include <QtGui/QResizeEvent> #include <QtCharts/QChart>
#include <QtCharts/QScatterSeries> #include <QtCharts/QLineSeries> // #include
<QtCharts/QSplineSeries> // #include <QtWidgets/QGraphicsTextItem> #include
<QBarCategoryAxis> #include <QValueAxis> #include <QBarSeries> #include
<QBarSet> #include <QDebug> QT_CHARTS_BEGIN_NAMESPACE class QChartView; class
QChart; QT_CHARTS_END_NAMESPACE QT_CHARTS_USE_NAMESPACE namespace Ui { class
MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit
MainWindow(QWidget *parent = 0); ~MainWindow(); private: void initline();
private slots: void sltpushButton(); void sltpushButton_2(); void
sltpushButton_3(); void sltCategoriesChanged(); private: Ui::MainWindow *ui;
QChart* m_chart; QLineSeries* m_lineSeries; QScatterSeries* m_scatterSeries;
QBarCategoryAxis* m_axis; QValueAxis* m_axisY; QChartView* m_chartView; QList<
int> m_list; }; #endif // MAINWINDOW_H mainwindow.cpp



#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->setPointLabelsVisible(true); m_scatterSeries = new
QScatterSeries(m_chart);//创建散点 m_scatterSeries->setMarkerShape(QScatterSeries::
MarkerShapeRectangle);//设置散点样式 m_scatterSeries->setMarkerSize(15);//设置散点大小
m_chart->addSeries(m_lineSeries); m_chart->addSeries(m_scatterSeries); m_chart
->setTitle("xxxx"); *m_lineSeries << QPointF(0, 5) << QPointF(3, 0) << QPointF(7
, 6) << QPointF(9, 7) << QPointF(10, 6); *m_scatterSeries<< 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_chart
->setAxisX(m_axis, m_scatterSeries); 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->setAxisY(m_axisY, m_scatterSeries); m_chart->legend()->setVisible(true
); m_chart->legend()->setAlignment(Qt::AlignBottom); m_chart->legend()->hide();
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())); } void MainWindow::sltpushButton() { } void
MainWindow::sltpushButton_2() { m_axis->clear(); } void MainWindow
::sltpushButton_3() { } void MainWindow::sltCategoriesChanged() { m_lineSeries
->clear(); m_scatterSeries->clear(); for(int i = 0 ; i<m_list.count(); i++) {
m_lineSeries->append(i,m_list.at(i)); m_scatterSeries->append(i,m_list.at(i)); }
QStringList categories; categories << "A" << "B" << "C"<< "D" << "E" << "F";
m_axis->append(categories);// }


代码下载:http://download.csdn.net/download/u010304326/10227980