• 6322阅读
  • 2回复

[提问]qt 用QHash在treewidget里面显示的问题!!!急!!! [复制链接]

上一主题 下一主题
离线aishang
 
只看楼主 倒序阅读 楼主  发表于: 2011-03-22
第一次使用QHash显示。发现一个问题,Qhash这个表刚开是空的,所以我在循环前先插入了一条信息,可是在显示的时候会出现内存错误,就是每次显示的第一条数据变化的时候就出错,好像第一个item不能修改似的。求解!
int Thread::dispose(QByteArray Tag_data)
{
    int all;
    QByteArray P_Null;
    P_Null[0] = 11;
    QByteArray Tag_name;
    unsigned char percent;
    QHashIterator<QByteArray,QTreeWidgetItem *> relate(hash);
    qDebug() << Tag_data.length() << 2;
    for(all = 0;all <Tag_data.length();all++)
    {
        if(Tag_data.at(all+4) == 0)
        {
            all = all + Tag_data.at(all +2)-1;
            qDebug() << all << 1;
        }
        else
        if(Tag_data.at(all+4) > 0)
        {
            Tag_name = Tag_data.mid((all + 12),12);
            unsigned char temp =Tag_data.at((all + 5));
            percent = temp*100/255;
            all = all + Tag_data.at(all +2)-1;
            if(hash.isEmpty())
            {
                 hash.insert(Tag_name.toHex(),Tag_N1);
                 Tag_N1 = new QTreeWidgetItem(tree,QStringList(Tag_name.toHex()));
                 Tag_N1->setText(1,QString::number(percent)+"%");
            }
            int size = 1;
            while (relate.hasNext())
            {
               relate.next();
               if(relate.key() == Tag_name.toHex())
               {
                  relate.value()->setText(1,QString::number(percent)+"%");
                  break;
               }
               if(relate.key() != Tag_name.toHex())
               {
                   if(hash.size() == size)
                   {
                        hash.insert(Tag_name.toHex(),Tag_N1);
                        Tag_N1 = new QTreeWidgetItem(tree,QStringList(Tag_name.toHex()));
                        Tag_N1->setText(1,QString::number(percent)+"%");
                   }
               }size++;
            }
         }
     }
     return 1;
}
离线dbzhang800

只看该作者 1楼 发表于: 2011-03-22
                        hash.insert(Tag_name.toHex(),Tag_N1);
                        Tag_N1 = new QTreeWidgetItem(tree,QStringList(Tag_name.toHex()));
                        Tag_N1->setText(1,QString::number(percent)+"%");

不清楚你的 Tag_N1 一开始是什么东西,只是对你这个先使用再赋值,感觉挺奇怪的。你不是一开始都没初始化吧?
离线aishang
只看该作者 2楼 发表于: 2011-03-23
回 1楼(dbzhang800) 的帖子
QTreeWidgetItem *Tag_N1;这个是对应hash的。Tag_N1为了使用方便我定义成了全局的。难道问题在这里吗?你说的初始化是指的那个?Tag_N1还是hash?求教!
快速回复
限100 字节
 
上一个 下一个