2012-03-19 7 views
0

QwtとC++を使用してチャートデモを作成しようとしています。ボタンクリックハンドラに次のコードを追加しました。レイアウトにQwtプロットを追加するときのSegfault

QwtPlot *plot = new QwtPlot(QwtText("Demo")); 
plot->setGeometry(0, 0, 100, 100); 
QwtPlotCurve curve("Sine"); 
QVector<double> xs; 
QVector<double> ys; 
for (double x = 0; x < 100; x++) 
{ 
    xs.append(x); 
    ys.append(sin(x)); 
} 
QwtPointArrayData *series = new QwtPointArrayData(xs, ys); 
curve.setData(series); 
curve.attach(plot); 
plot->show(); 
QLayout *lay = ui->centralWidget->layout(); 
lay->addWidget(plot); 

とaddWidget(plot);でsegfaultsです。

私は間違っていますか?

答えて

2

centralWidgetのレイアウトはおそらくNULLであるか、ui(例:setUp())を初期化していない可能性があります。最初のケースはif(lay == NULL)で、2番目のケースではコードを確認してください。

最初のケースが正しい場合は、QDesignerのUIファイルを見てレイアウトを追加してください。

+0

ありがとう、レイは本当にNULLだった。デザイナーでレイアウトを追加しました。 –