QAbstractSeries 信号被点击因为类型是 QLineSeries

QAbstractSeries signal clicked because type is QLineSeries

因为 QAbstractSeries 的类型是 QLineSeries,所以有没有办法将 QAbstractSeries 连接到点击信号?

我可以做到以下几点:

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

但是如果我在另一个class中定义了这个系列,我只能通过

访问这个系列
QList<QAbstractSeries*> seriesList = chart->series();

我无法通过

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

因为 QAbstractSeries 没有信号 "clicked"。但是我可以通过

访问类型
seriesList[0].type();

但现在我不知道如何处理与这些信息的连接。还是有另一种方法可以将系列作为 QLineSeries 从我的图表中取出?

clicked signal is associated with the objects of the class 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);
    }
}