在负责显示图形的类的函数中,我传递一个指向对象列表的指针。将来自对象数据的坐标组合到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对象的指针和副本。
发布于 2019-08-13 19:32:42
问题解决了。添加系列到图表尚未创建。它变成了:
m_chart = new QChart();
emit readDataFromFile();它是:
emit readDataFromFile(); m_chart = new QChart();https://stackoverflow.com/questions/57366854
复制相似问题