我正在用QtCharts (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();在另一个函数中,我使用序列化事件根据开关做出一些选择:
case acquisition :
reely = (recev_message.toInt())/1000;
reelx = index+1;
qDebug() << reely;
serie->append(reelx, reely);
index++;当我收到一条串行消息时被冻结后,我启动了一个调试。SIGSEGV似乎附加在步骤serie-> append (reelx,reely);
我不明白为什么我不能追加一个新的值,而在Qt图表的示例程序中,它似乎起作用了。
谢谢你的阅读。
发布于 2017-09-08 08:22:11
我发现问题出在哪里。
我实际上把意甲宣布为一个全局变量。但在主阴影构建功能中,我写道:
QLineSeries *serie = new QLineSeries();编译器似乎扣除了我重新声明对象的内容,并更改了对象的范围。当我试图在另一个函数中使用其中一个成员时,我的范围不太正确
所以,我改变了这句话:
serie = new QLineSeries();一切都很有魅力。
感谢每个人
https://stackoverflow.com/questions/46049271
复制相似问题