gpt4 book ai didi

c++ - qwtcurve 不绘制图形

转载 作者:行者123 更新时间:2023-11-28 06:53:50 25 4
gpt4 key购买 nike

我有一个问题,最近我安装了 qwt 库来绘制图形并运行了一些简单的教程(http://www.youtube.com/watch?v=8l2VIooQXVc 准确地说是本教程,我遇到了麻烦)并且遇到了问题。我的图不会画。 Qwt只是绘制坐标系和标题。我的代码和教程代码的区别,他直接在main中绘制,而我在QMainWindow中这样做,将plot添加到QLayout中。这是我的代码:

void MainWindow::PrioritizeGraphic()
{

plot = new QwtPlot( QwtText( "Demo" ) );
plot->setAxisScale( QwtPlot::xBottom, 0.0, 2.0 * M_PI * 10 );
plot->setAxisScale( QwtPlot::yLeft, -3.0, 3.0 );
int i = 0;
double xl[200], yl[200];
QwtPlotCurve curve( "Sine curve" );
while( i < 100 )
{
for( double x = 0; x < 2.0 * M_PI * 5; x += ( M_PI / 10.0 ) )
{
yl[i] = sin(x);
xl[i] = x;
i++;
curve.setRawSamples( ( const double* )&xl, ( const double* )&yl, i );
curve.attach( plot );
}
}

curve.setRawSamples( ( const double* )&xl, ( const double* )&yl, 100 );
curve.attach( plot );
plot->show();



}

在 QMainWindow 构造函数中:

QLayout* lay = ui->centralWidget->layout();

lay->addWidget( plot );

我该如何处理?

最佳答案

您的代码无法正常工作的原因是;以下变量是在函数 MainWindow::PrioritizeGraphic() 的范围内创建的:

  • double xl[200]
  • double yl[200]
  • QwtPlotCurve curve( "Sine curve" )

因为它们是在函数范围内定义的,所以当函数结束时它们将被销毁。作为解决方案,您可以让他们成为类(class)成员,这样他们就能在您的 MainWindow 期间存活。对象没有被销毁。

您引用的代码有效,因为变量定义在 main() 中功能和main()只要应用程序运行,功能就不会完成。

您也可以使用 QwtPlotCurve::setSamples而不是 QwtPlotCurve::setRawSamples .它将对数据进行深度复制,因此您可以随意删除数组。

关于c++ - qwtcurve 不绘制图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23431958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com