gpt4 book ai didi

c++ - 由于类型为QLineSeries,所以单击了QAbstractSeries信号

转载 作者:行者123 更新时间:2023-12-02 10:36:01 25 4
gpt4 key购买 nike

由于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从我的图表中删除?

最佳答案

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

关于c++ - 由于类型为QLineSeries,所以单击了QAbstractSeries信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60244008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com