Segfault при добавлении графика Qwt в макет

Я пытаюсь построить демо-диаграмму, используя Qwt и C++. Я добавил следующий код в обработчик нажатия кнопки:

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);

и он segfaults в addWidget(plot);.

Что я делаю не так?


person post-factum    schedule 19.03.2012    source источник


Ответы (1)


Макет centralWidget, вероятно, равен NULL, или вы не инициализировали ui (например, вызывая setUp()). Проверьте первый случай с помощью if(lay == NULL) и второй, посмотрев на свой код.

Если первый случай верен, взгляните на свой файл пользовательского интерфейса в QDesigner и добавьте макет.

person pmr    schedule 19.03.2012
comment
Спасибо, лежал действительно NULL. Я добавил макет в Designer, и он работает. - person post-factum; 19.03.2012