c++ - QAbstractSeries 信号被点击,因为类型是 QLineSeries
问题描述
有没有办法将 QAbstractSeries 连接到点击信号,因为 QAbstractSeries 的类型是 QLineSeries?
我可以执行以下操作:
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);
}
}
推荐阅读
- linux - 关于 OpenDaylight 的 VTN 功能
- angular - 关于 Angular 材料中的 Datepicker
- python - 在 Python 中生成通用乘法问题
- spring - Spring Boot 依赖于 Spring 3
- glsl - gl_Position.w 在 Vulkan 中的作用是什么?
- .net - 如何通过 PhantomJS Driver 从网站的 HTML 中提取数据
- reactjs - 如何设置 React 自定义端口,如 3129
- android - Android 通话录音应用程序 - 在通话录音机 AudioSource.VOICE_COMMUNICATION 中不记录双方的通话
- php - WordPress 分页仅在第一页上带有功能帖子
- ios - iOS - UINavigatioItem 中的 BarButtonItem 角间距