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);
}
}
因为 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);
}
}