QChartView(VS2013+Qt5.9.1)
- QChartView 使用 需要加宏, 否则无法使用
QT_CHARTS_USE_NAMESPACE
- 不同版本QtTools下,Qt5Chatrs.lib 库可能需要手动加载,QtTools图形界面不一定包含QtCharts选项,未包含会导致编译时出现未定义的外部符号或未定义的外部命令。
QChart
1.如果在调用addSeries后,继续向series内append数据,可能会出现图表显示不完全的问题。
2.调用addSeries,series不能为空,即series内没有数据,为空会报错。
3.调用setAxisX或setAxisY之前,要先调用addSeries,将series添加到chart上。不然会没有数据。且需要在调用addSeries之前将数据append完成,调用之后append无效。
4.LineChart,X轴文字与值不对齐,需要调用setLabelsPosition()函数。
axis->setLabelsPosition(QCategoryAxis::AxisLabelsPositionOnValue);
5.调整边界范围可以让显示不全的文字显示全
chart->layout()->setContentsMargins(0, 0, 0, 0); //设置外边界全部为0
chart->setMargins(QMargins(0, 0, 0, 0)); //设置内边界全部为0
chart->setBackgroundRoundness(0); //设置背景区域无圆角
6.当用QCategoryAxis作为x轴,QValueAxis作为y轴的时候如果y轴的值太小那么QCategoryAxis上的第一个坐标值不显示。
axis->setLabelFormat("%f ---"); //设置格式,让数值变长,将左边区域撑大,有足够空间显示。
设置动画效果
void setAnimationOptions(AnimationOptions options);
QChart::NoAnimation // 没有动画
QChart::GridAxisAnimations // 网格加载动画
QChart::SeriesAnimations // 图表加载动画
QChart::AllAnimations // 全部动画
eg:
chart->setAnimationOptions( QChart::AllAnimations);
设置标题
void setTitle(const QString &title);
设置图例是否显示
void setVisible(bool visible);
eg:
chart->legend()->setVisible(true);
设置图例显示位置
void setAlignment(Qt::Alignment alignment);
Qt::AlignLeft // 左侧
Qt::AlignRight // 右侧
Qt::AlignBottom // 底部
Qt::AlignTop // 顶部
.... // 其他效果暂未测试
eg:
chart->legend()->setAlignment( Qt::AlignLeft);
添加一个系列
void QChart::addSeries(QAbstractSeries *series);
eg:
QBarSeries * series = new QBarSeries();
chart->addSeries(series);
将一个轴覆盖到X轴上
// 类似函数还有: setAxisY,addAxis, createDefaultAxes
void QChart::setAxisX(QAbstractAxis *axis, QAbstractSeries *series = Q_NULLPTR);
eg:
QBarSeries * series = new QBarSeries();
QBarCategoryAxis *axisX = new QBarCategoryAxis();
chart->setAxisX(axisX,series);
滚动图表可见区域
chart->scroll(xrange, yrange);