簡體   English   中英

QAbstractSeries 信號被點擊,因為類型是 QLineSeries

[英]QAbstractSeries signal clicked because type is QLineSeries

有沒有辦法將 QAbstractSeries 連接到點擊信號,因為 QAbstractSeries 的類型是 QLineSeries?

我可以執行以下操作:

QlineSeries *series = new QLineSeries();
QChart *chart = new QChart();
series->append(1,1);
chart->addSeries(series);
connect(series, &QLineSeries::clicked, this, &View::myFunction);

但是,如果我在另一個類中定義了該系列,並且只能通過以下方式訪問該系列

QList<QAbstractSeries*> seriesList = chart->series();

我無法連接一個系列

connect(seriesList[0], &QAbstractSeries::clicked, this, &View::myFunction);

因為 QAbstractSeries 沒有“點擊”信號。 但我可以通過訪問類型

seriesList[0].type();

但是現在我不知道如何處理與這些信息的連接。 或者是否有另一種方法可以將系列作為 QLineSeries 從我的圖表中取出?

clicked信號與QXYSeries類及其派生類(例如 QLineSeries)的對象相關聯,因此解決方案是進行轉換以過濾該系列:

for(QAbstractSeries* series: chart->series()){
    if(QXYSeries* xyseries = qobject_cast<QXYSeries *>(series)){
        connect(xyseries, &QXYSeries::clicked, this, &View::myFunction);
    }
}

使用前面的代碼,它們將應用於從 QXYSeries 派生的類,例如 QLineSeries 和 QScatterSeries,但如果您只想應用於 QLineSeries,則必須執行以下操作:

for(QAbstractSeries* series: chart->series()){
    if(QLineSeries* lineseries = qobject_cast<QLineSeries *>(series)){
        connect(lineseries, &QLineSeries::clicked, this, &View::myFunction);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM