一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

概述
  在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);

 

posted on 2024-02-22 17:26  一杯清酒邀明月  阅读(484)  评论(0编辑  收藏  举报