QImage的isNull()函数

lumanman_ 2015-04-13 09:39:52
QImage的isNull()函数是什么意思?什么样的QImage对象算是Null?如何把一个QImage对象设为Null?
...全文
2454 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
信阳毛尖 2015-04-16
  • 打赏
  • 举报
回复
引用 3 楼 lsq19871207 的回复:
[quote=引用 2 楼 lumanman_ 的回复:] 我看一些程序是先创建一个QImage对象,然后用isNUll()函数来判断,我想可能创建不成功就会返回NUll吧!
前面不是说过了嘛,QImage对象归对象,QImage里面的图像数据归图像数据,他俩不能混淆了!QImage对象有了,但该对象里面不一定有图像数据啊

QImage pImage = new QImage();
if(pImage)   //对象创建成功,不为空
{
    pImage->loadFromData(.....);
    if(pImage->isNull())
        return;
    //........
    //........
}
delete pImage;
pImage = NULL;
[/quote] 这段代码逻辑上有问题,存在内存泄露的问题:

int nRet = 0;
QImage *pImage = new QImage();
if(pImage)   //对象创建成功,不为空
{
    pImage->loadFromData(.....);
    if(pImage->isNull())
    {
        nRet = -1;
        break;
    }
    //........
    //........
}
delete pImage;
pImage = NULL;
return nRet;
lumanman_ 2015-04-16
  • 打赏
  • 举报
回复
你说的内存泄露,是if(pimage->isNull) return ;这句吗?还有就是在你改后的这段代码中,delete pImage;pImage=Null;既然已经delete了,pImage已无指向,为什么还要pImage=Null呢?
lumanman_ 2015-04-15
  • 打赏
  • 举报
回复
嗯,懂了,谢谢!
信阳毛尖 2015-04-15
  • 打赏
  • 举报
回复
引用 2 楼 lumanman_ 的回复:
我看一些程序是先创建一个QImage对象,然后用isNUll()函数来判断,我想可能创建不成功就会返回NUll吧!
前面不是说过了嘛,QImage对象归对象,QImage里面的图像数据归图像数据,他俩不能混淆了!QImage对象有了,但该对象里面不一定有图像数据啊

QImage pImage = new QImage();
if(pImage)   //对象创建成功,不为空
{
    pImage->loadFromData(.....);
    if(pImage->isNull())
        return;
    //........
    //........
}
delete pImage;
pImage = NULL;
lx624909677 2015-04-15
  • 打赏
  • 举报
回复
比如你load一个不存在的图像文件,那么isNull就会返回true
lumanman_ 2015-04-14
  • 打赏
  • 举报
回复
我看一些程序是先创建一个QImage对象,然后用isNUll()函数来判断,我想可能创建不成功就会返回NUll吧!
信阳毛尖 2015-04-13
  • 打赏
  • 举报
回复
Returns TRUE if it is a null image; otherwise returns FALSE. A null image has all parameters set to zero and no allocated data 实际上QImage就是一个图像封装管理类,它这个类本身中存储着真正的图像数据,跟CPen一个道理:

CPen pen;
pen.CreatePen(PS_SOLID,2,RGB(192,192,192));   //创建真正的GDI对象

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧