Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 附加新点时的QLineSeries sigsegv_C++_Qt_Qtcharts - Fatal编程技术网

C++ 附加新点时的QLineSeries sigsegv

C++ 附加新点时的QLineSeries sigsegv,c++,qt,qtcharts,C++,Qt,Qtcharts,我正在用QtCreator(Qt5.9)开发一个数据记录应用程序,我想在QtCharts的帮助下添加一个图形 我解释我的工作: 我开始将我的行声明为全局变量: QLineSeries *serie; 在创建主窗口的循环中,我创建了一个图表、标准轴和所有我需要查看的直线 QChart *chart = new QChart(); chart->setTitle("Données accélération"); chart->setAnimationOptions(QChart::Al

我正在用QtCreator(Qt5.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++;
案例采集:
reely=(recev_message.toInt())/1000;
RELELX=指数+1;
qDebug()附加(reelx,reely);
索引++;
当我收到一条串行消息时,经过一次冻结后,我启动了一次调试。似乎在步骤serie->append(reelx,reely)处有一个SIGSEGV append

我不明白为什么我不能在Qtcharts的示例程序中添加一个新值,因为它似乎是有效的


谢谢你的阅读。

我发现问题出在哪里了

我有效地将serie声明为一个全局变量。但在mainvindow建筑功能中,我写道:

QLineSeries *serie = new QLineSeries();
似乎编译器推断我是在重新声明对象,并更改了对象的范围。当我试图在另一个函数中使用一个成员时,我不在正确的范围内

所以,我改变了这句话:

serie = new QLineSeries();
每件事都很有魅力


感谢大家

请尝试与valgrind联系。您好,在查看您的代码后:请查看您是否已初始化全局变量:
QLineSeries*serie未初始化的地方(8行注释)
//QLineSeries*serie=new QLineSeries()同样,样条曲线系列的相同名称在这里非常混乱
QSplineSeries*serie=new QSplineSeries()我的错。我之所以这样保留这些声明,是因为我使用QSpline和Qline进行了测试。顺便说一下,我使用Qlineseries。我试图将Qchart和Qchartview声明为全局变量,但没有任何更改。我是否被迫创建一个算法来恢复线数据、添加新数据和替换旧点?(如音频Qchart示例中所示)?