QT tips QChart chart demo

Qt Charts模块提供了一套易于使用的图表组件。它采用了Qt Graphics View框架,因此图表可以很容易地集成到现代的用户界面。 Qt Charts可以被用作QWidgets、QGraphicsWidget、或QML类型。用户可以方便地通过选择图表主题之一来创建令人印象深刻的图表。


作者:一去丶二三里

例子描述
AreaChart Example这个示例展示了如何创建一个简单的面积图。
Audio Example这个示例展示了动态数据的图形(麦克风输入)。
BarChart Example这个示例展示了如何创建一个柱状图。
BarModelMapper Example这个示例展示了如何使用QAbstractItemModel派生model作为柱状系列的数据。
Box and Whiskers Example这个示例展示了如何创建一个盒须(box-and-whiskers)图。
Callout Example这个示例展示了如何在图表上绘制一个额外的元素(callout)。
Chart Themes Example这个示例展示了不同的内置主题的外观和感觉。
Custom Chart Example这个示例展示了如何定制图表上不同元素的外观。
DateTimeAxis Example这个示例展示了如何利用QDateTimeAxis使用QLineChart。
Donut Chart Breakdown Example这个示例展示了如何使用使用QPieSeries API创建一个圆环分解图。
Donutchart Example这个示例展示了如何创建一个简单的圆环图,并对其中一片进行定制。
Dynamic Spline Example这个示例展示了如何绘制动态数据。
HorizontalBarChart Example这个示例展示了如何创建一个水平柱状图。
HorizontalPercentBarChart Example这个示例展示了如何创建一个简单的水平百分比柱状图。
HorizontalStackedBarChart Example这个示例展示了如何创建一个简单的堆叠(stacked)水平条形图。
Legend Example这个示例展示了如何分离图例以及如何附加回去。
LegendMarkers Example这个示例展示了如何利用图例标记。
Line and BarChart Example这个示例展示了如何结合不同的图表以及设置轴线。
LineChart Example这个示例展示了如何创建一个简单的折线图。
Logarithmic Axis Example这个示例展示了如何使用QLogValueAxis。
Model Data Example这个示例展示了如何使用QAbstractItemModel派生模型作为series的数据。
Multiple Axes Example这个示例展示了如何创建一个有两个垂直轴的简单图表,每个series一个。
Nested Donuts Example这个示例展示了如何使用QPieSeries API创建一个嵌套的圆环图。
OpenGL Accelerated Series Example这个示例展示了如何启用OpenGL加速QLineSeries和QScatterSeries。
PercentBarChart Example这个示例展示了如何创建一个简单的百分比柱状图。
Pie Chart Customization Example这个示例展示如何定制饼图的外观和感觉。
Piechart Drilldown Example这个示例展示了如何实现一个有drilldown效果的饼状图。
Piechart Example这个示例展示了如何创建一个简单的饼状图和并且定制一些饼片。
Polar Chart Example这个示例展示了如何用多个不同的series创建一个简单的极坐标图。
Qml Axes这个示例展示了如何在你的QML应用程序使用轴线。
Qml Charts Example这个示例展示了如何通过使用使用qml使用不同的图表类型。
Qml Custom Legend这个示例展示了如何创建自定义的图例。
Qml Customizations这个示例展示了如何定制一个ChartView和series的不同视觉属性。
Qml F1 Legends这个示例展示了如何使用XmlListModel作为一个图表的数据源。
Qml Oscilloscope这个示例展示了如何使用Qt Charts QML API来实现严格性能要求的应用程序。
Qml Polar Chart这个示例展示了如何使用一个极坐标图在你的QML应用程序中。
Qml Weather这个示例展示了如何使用不同的图表类型通过使用qml。
Scatter Interactions Example这个示例展示了如何创建一个简单的散布图和交互图以及如何与之交互。
ScatterChart Example这个示例展示了如何创建一个简单的散布图。
SplineChart Example这个示例展示了如何创建一个简单的曲线图。
StackedBarChart Drilldown Example这个示例展示了如何使用一个stacked柱状图来实现drilldown。
StackedBarChart Example这个示例展示了如何创建一个简单的stacked柱状图。
Temperature Records Example这个示例展示了如何创建一个带有负图的柱状图。
Zoom Line Example

对应的官方demo http://doc.qt.io/qt-5/qtcharts-index.html


pro文件添加

QT       += charts

.h文件添加

/*QtChart的地方需要包含#include <QtCharts>以及命名空间using namespace QtCharts;
 * (或者QT_CHARTS_USE_NAMESPACE替代using namespace QtCharts;)
 * 但是ui_widget文件是自动生成的,不能再此文件里进行修改,此文件是包含在widget.h的一个叫Ui的命名空间中
 * 所以把
 * #include <QtCharts>
 * QT_CHARTS_USE_NAMESPACE
 * 放在.h文件里面
*/
#include <QtCharts>
QT_CHARTS_USE_NAMESPACE

Custom Chart Example 这个示例展示了如何定制图表上不同元素的外观。

#include <QApplication>
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QCategoryAxis>
#include <QtCharts>
using namespace QtCharts;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QLineSeries *series = new QLineSeries();
    *series << QPointF(0, 6) << QPointF(9, 4) << QPointF(15, 20) << QPointF(25, 12) << QPointF(29, 26);
    QChart *chart = new QChart();
    chart->legend()->hide();
    chart->addSeries(series);

    //定制曲线的颜色宽度 Customize series
    QPen pen(QRgb(0x02550));
    pen.setWidth(2);
    series->setPen(pen);

    //自定义Chart字体颜色等 Customize chart title
    QFont font;
    font.setPixelSize(18);
    chart->setTitleFont(font);
    chart->setTitleBrush(QBrush(Qt::white));
    chart->setTitle("Customchart example");

    //自定义Chart背景 Customize chart background
    QLinearGradient backgroundGradient;
    backgroundGradient.setStart(QPointF(0, 0));
    backgroundGradient.setFinalStop(QPointF(0, 1));
    backgroundGradient.setColorAt(0.0, QRgb(0xd2d0d1));
    backgroundGradient.setColorAt(1.0, QRgb(0x4c4547));
    backgroundGradient.setCoordinateMode(QGradient::ObjectBoundingMode);
    chart->setBackgroundBrush(backgroundGradient);

    //自定义绘图的背景 Customize plot area background
    QLinearGradient plotAreaGradient;
    plotAreaGradient.setStart(QPointF(0, 1));
    plotAreaGradient.setFinalStop(QPointF(1, 0));
    plotAreaGradient.setColorAt(0.0, QRgb(0x555555));
    plotAreaGradient.setColorAt(1.0, QRgb(0x55aa55));
    plotAreaGradient.setCoordinateMode(QGradient::ObjectBoundingMode);
    chart->setPlotAreaBackgroundBrush(plotAreaGradient);
    chart->setPlotAreaBackgroundVisible(true);

    QCategoryAxis *axisX = new QCategoryAxis();
    QCategoryAxis *axisY = new QCategoryAxis();

    //自定义XY轴字体 Customize axis label font
    QFont labelsFont;
    labelsFont.setPixelSize(12);
    axisX->setLabelsFont(labelsFont);
    axisY->setLabelsFont(labelsFont);

    //自定义XY轴颜色 Customize axis colors
    QPen axisPen(QRgb(0xFFB400));//黄色
    axisPen.setWidth(2);
    axisX->setLinePen(axisPen);
    axisY->setLinePen(axisPen);

    //自定义XY轴上显示的label的颜色 Customize axis label colors
    QBrush axisBrush(Qt::red);
    axisX->setLabelsBrush(axisBrush);
    axisY->setLabelsBrush(axisBrush);

    //自定义网格线和阴影 Customize grid lines and shades
    axisX->setGridLineVisible(false);
    axisY->setGridLineVisible(false);
    axisY->setShadesPen(Qt::NoPen);
    axisY->setShadesBrush(QBrush(QColor(0x99, 0xcc, 0xcc, 0x55)));
    axisY->setShadesVisible(true);

    axisX->append("low", 10);
    axisX->append("optimal", 20);
    axisX->append("high", 30);
    axisX->setRange(0, 30);

    axisY->append("slow", 10);
    axisY->append("med", 20);
    axisY->append("fast", 30);
    axisY->setRange(0, 30);

    chart->setAxisX(axisX, series);
    chart->setAxisY(axisY, series);

    QChartView *chartView = new QChartView(chart);
    chartView->setRenderHint(QPainter::Antialiasing);

    QMainWindow window;
    window.setCentralWidget(chartView);
    window.resize(400, 300);
    window.show();


    return a.exec();
}

这里写图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值