因为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);但是,如果我在另一个类中定义了该系列,并且只能通过
QList<QAbstractSeries*> seriesList = chart->series();我无法通过连接一个系列
connect(seriesList[0], &QAbstractSeries::clicked, this, &View::myFunction);因为QAbstractSeries没有“点击”的信号。但我可以通过以下方式访问该类型
seriesList[0].type();但现在我不知道如何处理与这些信息的联系。或者,是否有其他方法可以将该系列作为QLineSeries从我的图表中提取出来?
发布于 2020-02-16 07:20:36
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);
}
}https://stackoverflow.com/questions/60244008
复制相似问题