概述
在Qt绘制图表时,图例并不是由QChart类所管理的,而是交给单独的QLegend类。
QLegend类负责图例的绘制(包括颜色、线型、字体等),它与图表类QChart的关系是attach和detach。
实例
参考官方实例:X:\Qt\Qt5.9.0\Examples\Qt-5.9\charts\legend
运行效果:
功能详解
设置图例标签是否粗体
先看看效果:
点击Toggle Bold按钮后,图例中显示的数据系列的名称,变为粗体:
对应的功能代码为:
1 QFont font = m_chart->legend()->font();
2 font.setBold(!font.bold());
3 m_chart->legend()->setFont(font);
设置图例标签是否斜体
同样的,设置为斜体:
对应的功能代码为:
1 QFont font = m_chart->legend()->font();
2 font.setItalic(!font.italic());
3 m_chart->legend()->setFont(font);
设置图例标签字体大小
改变字体大小为6:
对应的功能代码为:
1 QFont font = m_chart->legend()->font();
2 font.setPointSizeF(m_fontSize->value());
3 m_chart->legend()->setFont(font);
图例的对齐格式:
功能代码:
1 void MainWidget::setLegendAlignment()
2 {
3 QPushButton *button = qobject_cast<QPushButton *>(sender());
4
5 switch (m_chart->legend()->alignment()) {
6 case Qt::AlignTop:
7 m_chart->legend()->setAlignment(Qt::AlignLeft);
8 if (button)
9 button->setText("Align (Left)");
10 break;
11 case Qt::AlignLeft:
12 m_chart->legend()->setAlignment(Qt::AlignBottom);
13 if (button)
14 button->setText("Align (Bottom)");
15 break;
16 case Qt::AlignBottom:
17 m_chart->legend()->setAlignment(Qt::AlignRight);
18 if (button)
19 button->setText("Align (Right)");
20 break;
21 default:
22 if (button)
23 button->setText("Align (Top)");
24 m_chart->legend()->setAlignment(Qt::AlignTop);
25 break;
26 }
27 }
效果:
底部显示、
顶部显示、
左边显示、
右边显示、
图例附着/取消附着到图表
代码:
1 legend->detachFromChart();
2 m_chart->legend()->setBackgroundVisible(true);
3 m_chart->legend()->setBrush(QBrush(QColor(128, 128, 128, 128)));
4 m_chart->legend()->setPen(QPen(QColor(192, 192, 192, 192)));
效果:
还可以自由地移动图例的位置。功能代码:
1 m_chart->legend()->setGeometry(QRectF(m_legendPosX->value(),
2 m_legendPosY->value(),
3 m_legendWidth->value(),
4 m_legendHeight->value()));
返回到附着效果:
1 legend->attachToChart();
2 legend->setBackgroundVisible(false);