追加新点时QLineSeries sigsegv

时间:2017-09-05 07:29:33

标签: c++ qt qtchart

我正在使用Qt Creator开发数据记录应用程序(Qt 5.9),我想在QtCharts的帮助下添加图表。

我解释一下我的所作所为: 我开始将我的行声明为全局变量:

QLineSeries *serie;

在创建主窗口的循环中,我创建了一个图表,标准轴以及我需要查看所需行的所有内容。

QChart *chart = new QChart();
chart->setTitle("Données accélération");
chart->setAnimationOptions(QChart::AllAnimations);
QChartView *chartView = new QChartView(chart);
chartView->setMinimumWidth(700);
chartView->setRenderHint(QPainter::Antialiasing);
ui->gridLayout_2->addWidget(chartView,0,3,3,1);
QLineSeries *serie = new QLineSeries();
//QSplineSeries *serie = new QSplineSeries();
serie->append(QPointF(50, 50));
serie->append(QPointF(55, 55));
QPen green(Qt::red);
green.setWidth(3);
serie->setPen(green);
chart->addSeries(serie);
chart->createDefaultAxes();

在另一个函数中,我使用serialevent根据开关做出一些选择:

case acquisition :  
reely = (recev_message.toInt())/1000;
reelx = index+1;
qDebug() << reely;
serie->append(reelx, reely);
index++;

当我收到串行消息冻结后,我启动了调试。并且似乎SIGSEGV附加在步骤serie-&gt;追加(reelx,reely);

我不明白为什么在Qtcharts的示例程序中我无法附加新值似乎有效。

感谢您的阅读。

1 个答案:

答案 0 :(得分:0)

我发现了问题所在。

我有效地将系列声明为全局变量。但是在mainvindow构建函数中我写道:

QLineSeries *serie = new QLineSeries();

似乎编译器推断我重新声明了对象并改变了它的范围。当我尝试在另一个函数中使用其中一个成员时,我的范围不合适

所以,我改变了这一行:

serie = new QLineSeries();

一切都像魅力一样。

感谢大家