概述
在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);
标签:QLegend,Qt,button,chart,图例,font,legend From: https://www.cnblogs.com/ybqjymy/p/18027809