如何用Qt插槽绘制QwtPlot?

时间:2014-12-22 21:46:23

标签: c++ qt qwt

一天中的好时光!我有一个问题,你可能会觉得愚蠢和明显,但我已经试图解决这个问题。

我想通过按QPushButton绘制一些曲线。我写了插槽并将其连接到此按钮的相应信号。但是当我点击它时,情节上没有任何反应,虽然这个函数执行了,它可以在调试器和qDebug()输出上查看。

另一方面,如果你直接调用这个函数,而不是作为一个插槽,它可以很好地工作。唯一的区别是调用方法:在第一种情况下作为插槽,在第二种情况下作为方法。

一些代码示例:

//Slot 
void MainWindow::buttonClick()
{
    qDebug() << "Enter";
    XRDDataReader *xrdr = new XRDDataReader();
    xrdr->fromFile("/home/hippi/Документы/Sources/Qt/49-3.xy");

    ui->plot->plotXRD(xrdr->xValues(), xrdr->yValues());
    qDebug() << "Quit";
}

void Plotter::plotXRD(QVector<double> x, QVector<double> y)
{
    QwtPlotCurve *curve = new QwtPlotCurve();
    curve->setRenderHint
                ( QwtPlotItem::RenderAntialiased, true );
    curve->setPen(Qt::black, 2);

    curve->setSamples(x,y);
    curve->attach(mainPlot);
}

1 个答案:

答案 0 :(得分:1)

只要未启用自动绘图,您就必须调用replot来进行更改。