【问题标题】:Qt & QWT: QwtPlotCurve - Curve not showing upQt & QWT:QwtPlotCurve - 曲线未显示
【发布时间】:2013-12-09 13:43:54
【问题描述】:

我想使用 QWT 和 Qt Creator 显示一个简单的图表:

Qt 版本:4.8.2,Qt Creator:2.5.2,QWT 版本:6.0.0

我在我的 MainWindow 中添加了一个 QwtPlot(在示例中称为“myPlot”)。然后我有一个回调函数,每次按下按钮时都会调用它:

void MainWindow::forwardPlot()
{
    double x[9] = {1,20,30,40,50,60,70,200,500};
    double y[9] = {1,500,3,1,200,100,2,1,0};
    QwtPlotCurve *curve = new QwtPlotCurve();
    curve->setRawSamples(x,y,9);
    curve->attach( ui->myPlot );
    curve->show();
    ui->myPlot->replot();
    ui->label->setText("bla");
}

编译工作正常... 标签设置为“bla”,所以我知道调用了回调函数。但不显示曲线。例如,我可以调整 myPlot 的大小。但是显示曲线不起作用。有什么提示吗?

【问题讨论】:

  • ui->myPlot 以前是否可见?如果添加 ui->myPlot->show() 会发生什么
  • 不,我已经试过了。没有帮助:-(

标签: qt plot qwt


【解决方案1】:

您的点数组在堆栈上,离开 forwardPlot() 后将消失。

【讨论】:

    【解决方案2】:
    1. 您似乎没有为曲线设置笔颜色:

      curve->setPen(QColor(Qt::green));

    2. 您需要设置轴,以便 Qwt 知道要显示绘图的哪一部分:

      ui->myPlot->setAxisScale(QwtPlot::xBottom, 1.0, 500.0);

      ui->myPlot->setAxisScale(QwtPlot::yLeft, 1.0, 500.0);

    3. 我还会设置曲线的标题,看看你的 QwtPlot 是否有效:

      ui->myPlot->setTitle("绘图标题");

    编辑:我已经重现了这个问题。 setRawSamples 要求您传递的数据缓冲区在绘图的生命周期内有效。在您的情况下,您将通过 forwardPlot() ends

    时无效的本地缓冲区

    改为在堆中分配缓冲区。

    【讨论】:

    • 从上面的提示中,只有第 3 部分(绘制标题)有效......仍然不明白问题所在。
    • “作品”是指您可以在情节小部件上看到标题,但看不到情节本身?看到轴了吗?请考虑发布可重现问题的可编译示例或将项目上传到某处,因为问题可能在其他地方(如 UI 文件)。
    • 好的,我会尽快提供一个例子。我之前在评论中的意思是,我可以看到标题。我还可以看到绘图区域、轴,我可以更改绘图轴的颜色。但我不能改变两个轴的比例(你的答案是两个)。而且,最重要的是,曲线没有出现...感谢您的评论!
    • 看上面的编辑,看来这是问题的根源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多