c++ - 如何从列表中将对象添加到图表中?
问题描述
在负责显示图形的类的函数中,我传递了一个指向对象列表的指针。将对象数据中的坐标组合到 QAreaSeries 和列表 QList 中的框。我想在图表上显示此列表的元素。
标题:
class DevMapViewer : public QGraphicsView
{
Q_OBJECT
public:
DevMapViewer(QWidget *parent = nullptr);
signals:
void deviceId(QString id);
void readDataFromFile(void);
protected:
void resizeEvent(QResizeEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void keyPressEvent(QKeyEvent *event);
void keyReleaseEvent(QKeyEvent *event);
void wheelEvent(QWheelEvent *event);
public slots:
void deviceSetList(QList<AxDevice *> *data);
private:
void chartZoom(qreal mZoom);
uint32_t m_devCount = 0;
QChart *m_chart;
QChartView *chartView;
qreal mFactor=1.0;
Callout *m_tooltip;
QList<Callout *> m_callouts;
QList<QAreaSeries *> *m_series;
QCategoryAxis *axisX;
QCategoryAxis *axisY;
QLineSeries *series0;
QLineSeries *series1;
QAreaSeries *series;
};
来源:
void DevMapViewer::deviceSetList(QList<AxDevice *> *data)
{
QList<QAreaSeries *> *m_series = new QList<QAreaSeries *>;
int i = 0;
while(i<(data->size())){
QLineSeries *series0 = new QLineSeries();
QLineSeries *series1 = new QLineSeries();
QAreaSeries *series = new QAreaSeries();
series0->append(data->at(i)->getX0(data->at(i)->chanelNum()),
data->at(i)->getY0(data->at(i)->chanelNum()));
series0->append(data->at(i)->getX1(data->at(i)->chanelNum()),
data->at(i)->getY0(data->at(i)->chanelNum()));
series1->append(data->at(i)->getX0(data->at(i)->chanelNum()),
data->at(i)->getY1(data->at(i)->chanelNum()));
series1->append(data->at(i)->getX1(data->at(i)->chanelNum()),
data->at(i)->getY1(data->at(i)->chanelNum()));
series->setLowerSeries(series0);
series->setUpperSeries(series1);
m_series->append(series);
m_series->at(i)->setName(data->at(i)->deviceId());
m_chart->addSeries(m_series->at(i));
m_chart->setAxisX(axisX, m_series->at(i));
m_chart->setAxisY(axisY, m_series->at(i));
connect(m_series->at(i),
&QAreaSeries::hovered,
this,
&DevMapViewer::tooltip);
i++;
}
}
执行一行时:
m_chart->addSeries(m_series->at(i));
程序因操作系统的分段错误而关闭
Segmentation fault (signal SIGSEGV)
试图传递 QList 对象的指针和副本。
解决方案
问题已解决。向尚未创建的图表添加了系列。它变成了:
m_chart = new QChart();
emit readDataFromFile();
它是:
emit readDataFromFile(); m_chart = new QChart();
推荐阅读
- python - 如何使用python将数据集导出到excel?不断收到以下错误“str object has no attribute 'to_excel'”
- asp.net - httpClient 异步请求和会话
- arrays - 反转方法不在数组上呈现
- php - PDO 选择并显示具有相同日期的数据数组
- html - 如何使用鼠标悬停扩展/转换 div?
- python - 如何在 python socketio 服务器中的 uvicorn.run() 之后执行代码?
- amazon-web-services - 在没有 --profile 标志的情况下,每个 aws 命令都会失败并出现不同的错误
- python - Python datetime.today() 处理时区
- java - 如何使用数据提供程序在 testNG 上并行运行测试?
- docker - docker-compose dockerignore 的命名空间