1. 概述
QAreaLegendMarker
是 Qt Charts 模塊中的一部分,用于在圖例(Legend)中表示 QAreaSeries
的標記。它負責顯示區域圖的圖例項,通常包含區域顏色樣例和對應的描述文字。圖例標記和對應的區域圖關聯,顯示區域的名稱及其樣式,并且可以通過鼠標點擊、懸停等方式交互,或者自定義圖例項的樣式。
2. 重要方法
- QAreaLegendMarker::series() const:返回該圖例標記所關聯的
QAreaSeries
數據系列。 - QAreaLegendMarker::setVisible(bool visible):設置圖例標記的可見性。若設置為
false
,則該圖例標記將不可見。 - QAreaLegendMarker::isVisible() const:返回圖例標記是否可見。
void setBrush(const QBrush &brush)
:設置標記的填充樣式(顏色或漸變)。
QString label() const
:獲取圖例標記的文本標簽。void setLabel(const QString &label)
:設置圖例標記的文本標簽。
3、信號
void nameChanged()
:該信號在圖例標記的名稱發生變化時發出。void opacityChanged():
當圖例標記的不透明度發生變化時,該信號被發出。void useOpenGLChanged():
當圖例標記的 OpenGL 使用狀態發生變化時觸發的信號。void visibleChanged():
當圖例標記的可見性發生變化時發出此信號。
4、實例
#include <QApplication>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QValueAxis>
#include <QtCharts/QAreaSeries>
QT_CHARTS_USE_NAMESPACEint main(int argc, char *argv[])
{QApplication a(argc, argv);// 創建兩條線系列QLineSeries *upperSeries = new QLineSeries();QLineSeries *lowerSeries = new QLineSeries();// 設置上邊界線的數據upperSeries->append(0, 10);upperSeries->append(1, 20);upperSeries->append(2, 15);upperSeries->append(3, 25);// 設置下邊界線的數據lowerSeries->append(0, 5);lowerSeries->append(1, 10);lowerSeries->append(2, 8);lowerSeries->append(3, 15);// 創建 QAreaSeriesQAreaSeries *areaSeries = new QAreaSeries(upperSeries, lowerSeries);areaSeries->setName("示例區域圖");// 創建圖表QChart *chart = new QChart();chart->addSeries(areaSeries);chart->setTitle("QAreaLegendMarker 示例");chart->createDefaultAxes();// 獲取圖例并自定義QLegend *legend = chart->legend();legend->setVisible(true);legend->setAlignment(Qt::AlignBottom);// 獲取圖例標記(QAreaLegendMarker)QList<QLegendMarker *> markers = legend->markers(areaSeries);for (QLegendMarker *marker : markers) {QAreaLegendMarker *areaMarker = qobject_cast<QAreaLegendMarker *>(marker);if (areaMarker) {// 自定義圖例文本areaMarker->setLabel("自定義區域圖例");// 自定義圖例填充樣式QBrush customBrush(Qt::yellow);areaMarker->setBrush(customBrush);// 添加點擊事件QObject::connect(areaMarker, &QAreaLegendMarker::clicked, []() {qDebug() << "圖例標記被點擊!";});}}// 創建視圖QChartView *chartView = new QChartView(chart);chartView->setRenderHint(QPainter::Antialiasing);// 顯示窗口QMainWindow window;window.setCentralWidget(chartView);window.resize(800, 600);window.show();return a.exec();
}
覺得有幫助的話,打賞一下唄。。
? ? ? ? ? ?