1、QChart的设置
QChart是组合图表各部分、显示各种数据序列的绘图组件。QChart接口函数众多,其主要接口函数分类整理后见下表。对于一个属性,通常有一个设置函数和一个对应的读取函数,如setTitle()用于设置图表标题,对应的读取图表标题的函数为title()。
分组 | 函数名 | 功能描述 |
图表外观 |
void setTitle() void setTitIeFont() void setTitleBrush() void setTheme() void setMargins() QLegend * legend() void setAnimationOptions() |
设置图表标题.显示在图表上方,支持HTML格式 设置图表标题字体 设置图表标题画刷 设置主题,主题是内置的UI设置,定义了图表的配色 设置绘图区与图表边界的4个边距 返回图表的图例 设置序列或坐标轴的动画效果 |
数据序列 |
void addSeries() QList< QAbstractSeries > series() void removeSeries() void removeAIISeries() |
添加序列 返回图表拥有的序列的列表 移除-个序列,但并不删除序列对象 移除并删除图表的所有序列 |
坐标轴 |
void addAxis() QList axes() void setAxisX() void setAxisY() void removeAxis() void createDefaultAxes() |
为图表的某个方向添加坐标轴 返回某个方向的坐标轴列表 设置某个序列的水平方向的坐标轴 设罝某个序列的垂直方向的坐标轴 移除一个坐标轴 根据己添加的序列的类型,创建缺省的坐标轴,前面已有的坐标轴会被删除 |
setAnimationOptions(AnimationOptions options)函数设置图表的动画效果,输入参数是QChart::AnimationOptions枚举类型,有以下几种取值
QChart::NoAnimation---- 无动画效果
QChart::GridAxisAnimations---- 背景网格有动画效果:
QChart::SeriesAnimations---- 序列有动画效果:
QChart::AllAnimations—-—都有动画效果
主题是预定义的图表配色样式,是QChart::ChartTheme枚举类型,有多种取值,使图表具有 不同的配色效果
图例是一个QLegend类的对象,通过QChart::legend()可以获得图表的图例.图例是根据添加的序列自动生成的,但是可以修改图例的一些属性,如在图表中的显示位置、图例文字的字体等。例如,设置图例显示在图表的底部可用下面的语句:
ui.chartView->chart()->legend()->setAlignment(Qt::AlignBottom);
设置图例文字的字体的代码如下:
1 void MainWindow::on_btnLegendFont_clicked(){
2 //图例的字体设置
3 QFont font=ui->chartView->chart()->legend()->font();
4 bool ok=false;
5 font=QFontDialog::getFont(&ok,font);
6 if (ok)
7 ui.chartView->chart()->legend()->setFont(font);
8 }
2、 QLineSeries 序列的设置
QLineSeries的主要函数见下表
分组 |
函数 | 功能描述 |
序列名称 | void setName() | void setName() |
图表 | QChart* chart() | 返回序列所属的图表对象 |
序列外观 |
void setVisibte() void show() void hide() void setColor() void setPen() void setBrush() void setOpacity() |
设置序列可见性 显示序列,使序列可见 隐藏序列,使序列不可见 设置序列线条的颜色 设置绘制线条的颜色 设置绘制数据点的画刷 设置序列的透明度,0表示完全透明,1表示不透明 |
数据点 |
void setPointsVisible() void append() void insert() void replace() void clear() void remove() void removePoints() int count() QPointF& at() QList<QPointF> points() QVetor<QPointF> pointsVector() |
设置数据点的可见性 添加一个数据点到序列 在某个位置插入一个数据点 替换某个数据点 清除所有数据点 删除某个数据点 从某个位置开始,删除指定个数的数据点 数据点的个数 返回某个位置上的数据点 返回数据点的列表 返回数据点的列表,效率更高 |
数据点标签 |
void setPointLabeIsVisible() void setPointLabelsColor() void setPointLabelsFont() void setPointLabelsFormat() void setPointLabelsClipping() |
设置数据点标签的可见性 设置数据点标签的文字颜色 设置数据点标签字体 设置数据点标签格式 设置标签的裁剪属性,缺省为True,即绘图区外的标签被裁剪掉 |
坐标轴 |
bool attachAxis() bool detachAxis() Qlist attachedAxes() |
为序列附加-个坐标轴,通常需要一个X轴和一个Y轴 解除一个附加的坐标轴 返回附加的坐标轴的列表 |
数据点标签的格式设置使用函数setPointLabelsFormat(),有两种数据可以在数据点标签中显示,有固定的标签:
@xPoint 数据点的X值;
@yPoint 数据点的Y值。
例如,使数据点标签只显示Y值,设置语句为:
curSeries->setPointLabelsFormat (''@yPoint");
如果使数据点标签显示(X,Y)值,设置语句为:
curSeries->setPointLabelsFormat("(@xPoint,@yPoint)");
为一个序列添加数据点,可以使用append()函数,也可以使用流操作符“<
*series0<
为序列指定坐标轴
chart->setAxisX(axisX, series0);//添加X坐标轴
chart->setAxisX(axisX, ;series1);//添加X坐标轴
chart->setAxisY(axisY, series0);//添加Y坐标轴
chart->setAxisY(axisY, series1);//添加Y坐标轴
QChart:: setAxisX()函数为序列指定X坐标轴,并将坐标轴添加到图表里;QChart::setAxisY() 函数为序列指定Y坐标轴,并将坐标轴添加到图表里。无需再调用序列的attachAxist)函数。若要 使用序列的attachAxis()函数,则实现上述功能的代码如下:
chart->addAxis(axisX,Qt::AlignBottom); //坐标轴添加到图表表,并指定方向
chart->addAxis(axisY,Qt::AlignLeft);
series0->attachAxis (axisX) ;//序列 series0 附加坐标轴
series0->attachAxis(axisY);
seriesl->attachAxis (axisX);//序列 seriesl 附加坐标轴
seriesl->attachAxis(axisY);
即先用QChart::addAxis()函数添加一个坐标轴到图表,并指定坐标轴的方向,然后用序列的 attachAxis()函数附加坐标轴对象。
3、QValueAxis坐标轴的设置
用QValueAxis类的坐标轴,这是数值型坐标轴,与QLineSeries正好配合使用
QValueAxis类的 主要函数见下表
分组 |
函数 | 功能描述 |
坐标轴整体 |
void setVisible() Qt::Orientation orientation() void setMin() void setMax() void setRange() |
设置坐标轴可见性 返回坐标轴方向 设置坐标轴最小值 设置坐标轴最大值 设置坐标轴最小最大值表示的范围 |
void setLabelFormat() void setLabelsAngle() void setLabelsBrush() void setLabelsColor() void setLabe!sFont() void setLabelsVisible() |
void setLabelFormat() void setLabelsAngle() void setLabelsBrush() void setLabelsColor() void setLabe!sFont() void setLabelsVisible() |
设置标签格式,例如可以设置显示的小数点位数 设置标签的角度,单位为度 设置标签的画刷 设置标签文字颜色 设置标签文字字体 设置轴标签文字是否可见 |
轴线和刻度线 |
void setTickCount() void setLineVisible() void setLinePen() void setLinePenColor() |
设置坐标轴主刻度的个数 设置轴线和刻度线的可见性、 设置轴线和刻度线的凼笔 设置轴线和刻度线的颜色 |
主网格线 |
void setGridUneColor() void setGridLinePen() void setGridLineVisible() |
设置网格线的颜色 设置网格线的画笔 设置网格线的可见性 |
次刻度线和次网格线 |
void setMinorTickCount() void setMinorGridLineColor() void setMinorGridLinePen() void setMinorGridLineVisible() |
设置两个主刻度之间的次刻度的个数 设置次网格线的颜色 设置次网格线的画笔 设置次网格线的可见性 |
QValueAxis坐标轴有以下几个组成部分。
•坐标轴标题:是在坐标轴下方显示的文字,表示坐标轴的名称,图中X轴坐标轴的标题是 "time(secs)"。坐标轴标题除了可以设置文字内容,还可以设置字体、画刷和可见性。
•轴线和刻度线:轴线是图中从左到右的表示坐标轴的直线,刻度线是垂直于轴线的短线, 包括主刻度线和次刻度线,主刻度个数是tickCount(),每两个主刻度之间的次刻度的个数是 minorTickCount()。
•轴标签:在主刻度处显示的数值标签文字,可以控制其数值格式、文字颜色和字体等。
•主网格线:在绘图区与主刻度对应的网格线,可以设置其颜色、线条的pen属性、可见 性等。
•次网格线:在绘图区与次刻度对应的网格线,可以设置其颜色、线条的pen属性、可见 性等。
搞清楚坐标轴的这些组成部分后,对其进行属性读取或设置就只需调用相应的函数即可。