首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于类型为QLineSeries,已单击QAbstractSeries信号

由于类型为QLineSeries,已单击QAbstractSeries信号
EN

Stack Overflow用户
提问于 2020-02-16 07:13:27
回答 1查看 137关注 0票数 1

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

我可以执行以下操作:

代码语言:javascript
复制
QlineSeries *series = new QLineSeries();
QChart *chart = new QChart();
series->append(1,1);
chart->addSeries(series);
connect(series, &QLineSeries::clicked, this, &View::myFunction);

但是,如果我在另一个类中定义了该系列,并且只能通过

代码语言:javascript
复制
QList<QAbstractSeries*> seriesList = chart->series();

我无法通过连接一个系列

代码语言:javascript
复制
connect(seriesList[0], &QAbstractSeries::clicked, this, &View::myFunction);

因为QAbstractSeries没有“点击”的信号。但我可以通过以下方式访问该类型

代码语言:javascript
复制
seriesList[0].type();

但现在我不知道如何处理与这些信息的联系。或者,是否有其他方法可以将该系列作为QLineSeries从我的图表中提取出来?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-16 07:20:36

clicked信号与类QXYSeries及其派生对象(如QLineSeries )相关联,因此解决方案是进行转换以过滤序列:

代码语言:javascript
复制
for(QAbstractSeries* series: chart->series()){
    if(QXYSeries* xyseries = qobject_cast<QXYSeries *>(series)){
        connect(xyseries, &QXYSeries::clicked, this, &View::myFunction);
    }
}

使用前面的代码,它们将应用于从QXYSeries派生的类,如QLineSeries和QScatterSeries,但如果您只想应用于QLineSeries,则必须执行以下操作:

代码语言:javascript
复制
for(QAbstractSeries* series: chart->series()){
    if(QLineSeries* lineseries = qobject_cast<QLineSeries *>(series)){
        connect(lineseries, &QLineSeries::clicked, this, &View::myFunction);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60244008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档