QImage的isNull()函数

lumanman_ 2015-04-13 09:39:52
QImage的isNull()函数是什么意思?什么样的QImage对象算是Null?如何把一个QImage对象设为Null?
...全文
1968 7 打赏 收藏 转发到动态 举报
写回复
用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对象
 本次课程会带着大家学习Hash算法,从源码的角度去学习算法,更加容易理解的方式去学习,能够更高效的吸收学到的内容,也能培养出能够独自看源码,分析源码的能力。Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。  哈希表是根据设定的哈希函数H(key)和处理冲突方法将一组关键字映射到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位置称为哈希地址或散列地址。作为线性数据结构与表格和队列等相比,哈希表无疑是查找速度比较快的一种。  通过将单向数学函数(有时称为“哈希算法”)应用到任意数量的数据所得到的固定大小的结果。如果输入数据中有变化,则哈希也会发生变化。哈希可用于许多操作,包括身份验证和数字签名。也称为“消息摘要”。  简单解释:哈希(Hash)算法,即散列函数。它是一种单向密码体制,即它是一个从明文到密文的不可逆的映射,只有加密过程,没有解密过程。同时,哈希函数可以将任意长度的输入经过变化以后得到固定长度的输出。哈希函数的这种单向特征和输出数据长度固定的特征使得它可以生成消息或者数据。

15,979

社区成员

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

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