一天中的好时光!我有一个问题,您也许会觉得很愚蠢和明显,但是我已经想解决这个问题了。

我想通过按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);
}

最佳答案

只要未启用自动重新部署,就必须调用replot进行更改。

09-08 00:15