QCustomPlot使用过程中出现的错误

8 篇文章 0 订阅

我们知道在使用一个类的指针时,应先在头文件中声明,在构造函数中初始化或者new出来,一定不能不初始化,否则会出现内存错误。在析构函数中还应该把该指针delete掉,并且让其为NULL。

if(p != NULL)
{
delete p;
p = NULL;
}

然而我的项目在想用QCumstomPlot画圆时,使用了QCumstomPlot的QCPCurve类。主要代码如下:

声明:

QCPCurve *rotaryErrCurve;

创建:

rotaryErrCurve = new QCPCurve(ui->rotaryErrWidget->xAxis, ui->rotaryErrWidget->yAxis);

其他设置以及使用就不多赘述。在析构函数中:

if(rotaryErrCurve != NULL){
        delete rotaryErrCurve;
        rotaryErrCurve = NULL;
}

将这些部分添加到我原有工程里之后,老是出现错误:

C:\Program Files (x86)\SogouInput\Components\Error - RtlWerpReportException failed with status code :-1073741823. Will try to launch the process directly

程序异常结束。

G:\luoyong\51daq\build-51daq-Desktop_Qt_5_6_3_MinGW_32bit-Release\release\51daq.exe crashed.

我们知道这就是访问不存在或者不正确的地址造成的。在已知其他部分功能正常的情况下,复返检查新加部分也没有发现错误。直至在打开QCusomPlot的HELP文件,看到QCPCurve的构造函数的说明部分如下:

QCPCurve::QCPCurve (QCPAxis * keyAxis,explicit QCPAxis * valueAxis )
Constructs a curve which uses keyAxis as its key axis ("x") and valueAxis as its value axis ("y"). 
keyAxis and valueAxis must reside in the same QCustomPlot instance and not have the same orientation. 
If either of these restrictions is violated, a corresponding message is printed to the debug output (qDebug), the construction is not aborted, though.
The created QCPCurve is automatically registered with the QCustomPlot instance inferred from keyAxis. 
This QCustomPlot instance takes ownership of the QCPCurve, so do not delete it manually but use QCustomPlot::removePlottable() instead. 

前面部分都挺正常的,看到最后一句话我坐不住了。。。

do not delete it manually but use QCustomPlot::removePlottable() instead. 

然后我把delete部分改为:

    if(rotaryErrCurve != NULL)
    {
        ui->rotaryErrWidget->removePlottable(0);
        rotaryErrCurve = NULL;
    }

就好了。。。。

教训:

在使用一个不熟悉的类时要仔细阅读它的说明文档,不要想当然。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QCustomPlot 是一个功能强大、灵活易用的开源绘图小部件库。它可以在Qt应用程序创建可定制和交互式的绘图窗口。 使用手册详细讲解了QCustomPlot库的各种功能和用法。使用手册的第一部分介绍了安装QCustomPlot,包括如何获取并集成库文件到项目。第二部分解释了如何创建QCustomPlot实例,设置横轴和纵轴的范围,以及如何添加数据。手册提供了示例代码,方便开发者理解和使用。 手册的第三部分涵盖了各种绘图元素的绘制和自定义。开发者可以学习如何添加图表标题、轴标签和图例。手册还介绍了如何绘制折线图、散点图和柱状图,并解释了如何进行绘图属性的自定义,如颜色、样式和线宽等。 第四部分讲解了绘图交互和响应事件。开发者可以学习如何平移、缩放和选择绘图,以及如何处理各种交互事件,如鼠标点击和拖动。 最后,使用手册提供了一些附加功能和技巧。开发者可以学习如何添加数学和统计函数、图像贴图、自定义绘图样式和绘制函数曲线等高级功能。 总而言之,QCustomPlot使用手册提供了全面而详细的关于如何使用这个库的指导。通过学习和实践,开发者可以灵活使用QCustomPlot创建自定义和交互式的绘图窗口。无论是初学者还是有经验的开发者,都可以从这个手册获得帮助,提升绘图应用程序的质量和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值