如何使用Qt插槽中的QwtPplot绘制

How to plot with QwtPlot from Qt slot?

本文关键字:QwtPplot 绘制 插槽 何使用 Qt      更新时间:2023-10-16

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

我想通过按QPush按钮绘制一些曲线。我写了插槽并将其连接到此按钮的相应信号。但是当我点击它时,绘图上没有任何反应,尽管这个函数执行了,并且可以在调试器和 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);
}

只要未启用自动重绘,就必须调用 replot 才能进行更改。