• 7029阅读
  • 2回复

[提问]QtreeWidget 如何遍历(Qmap) [复制链接]

上一主题 下一主题
离线aishang
 
只看楼主 倒序阅读 楼主  发表于: 2011-02-21
            小弟做的是串口通信,利用treewidget结构显示数据。每秒收到一组数据。数据包括id和信号强度
       现在的问题是,我下一次收到的数据里存在和上一次收到数据里面相同的id号,所以我得利用遍历查找到相同的id,并且将新的信号强度跟新。请教了别人,说可以用Qhash和Qmap进行遍历查找。可一直没搞通!附上代码
      int Thread::dispose(QByteArray Tag_data)
{
    int number;
    number = Tag_data.at(4);
    int i;
    QTreeWidgetItem *Tag_N1;
    //QMap<QByteArray,QTreeWidgetItem *> map;
    QMapIterator<QByteArray,QTreeWidgetItem *> iterator(map);
    for(i=0;i<number;i++)
    {
        QByteArray Tag_name = Tag_data.mid(12+i*Tag_data.at(2),12);
        unsigned char temp =Tag_data.at(5+i*25);
        unsigned char percent = temp*100/255;
        if(!iterator.hasNext())
        {
            map.insert(Tag_name.toHex(),Tag_N1);
        }
        while(iterator.hasNext())
        {
            int b;
            for(b=0;b<map.size();b++)
            {
                if(iterator.key().toHex()==Tag_name.toHex())
                {
                    iterator.value()->setText(1,QString::number(percent)+"%");
                    //qDebug() << iterator.key().toHex() << endl;
                    iterator.next();
                    return 1;
                }
            }
            map.insert(Tag_name.toHex(),Tag_N1);
            Tag_N1 = new QTreeWidgetItem(ReaderName,QStringList(Tag_name.toHex()));
            Tag_N1->setText(1,QString::number(percent)+"%");
            //qDebug() << iterator.key() << endl;
        }
    }
    return 1;
}
离线jdwx

只看该作者 1楼 发表于: 2011-02-21
看看STL吧。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线aishang
只看该作者 2楼 发表于: 2011-02-22
我用的就是你说的这个STL,不知道是那个地方我没理解到位。。。才出不来我想要的效果!大哥给点具体的建议嘛!急啊!
快速回复
限100 字节
 
上一个 下一个