QLineSeries sigsegv 追加新点时
QLineSeries sigsegv when append a new point
我正在使用 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->append(reelx, reely);
我不明白为什么我不能在 Qtcharts 的示例程序中附加一个新值,它似乎可以工作。
感谢您的阅读。
找到问题所在了
我有效地将系列声明为全局变量。但是在我写的mainvindow构建函数中:
QLineSeries *serie = new QLineSeries();
好像编译器推断我是重新声明了对象,改变了对象的作用域。当我试图在另一个函数中使用其中一个成员时,我不在正确的范围内
因此,我更改了那一行:
serie = new QLineSeries();
一切都很顺利。
感谢大家
我正在使用 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->append(reelx, reely);
我不明白为什么我不能在 Qtcharts 的示例程序中附加一个新值,它似乎可以工作。
感谢您的阅读。
找到问题所在了
我有效地将系列声明为全局变量。但是在我写的mainvindow构建函数中:
QLineSeries *serie = new QLineSeries();
好像编译器推断我是重新声明了对象,改变了对象的作用域。当我试图在另一个函数中使用其中一个成员时,我不在正确的范围内
因此,我更改了那一行:
serie = new QLineSeries();
一切都很顺利。
感谢大家