直接上代码: 
int value = 0; 
class ImageDelegate : public QItemDelegate 
{ 
public: 
ImageDelegate(
QObject *parent = 0):QItemDelegate(parent){}; 
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, 
const QModelIndex &index) const 
{ 
QProgressBar *progress = new QProgressBar(parent); 
progress->setValue(value); 
progress->repaint(); 
return progress; 
} 
};这个进度条的代码。下面是
显示的代码: 
tree = new QTreeWidget;
int MainWindow::dispose(QByteArray Tag_data) 
{ 
int all; 
QByteArray P_Null; 
P_Null[0] = 11; 
QByteArray Tag_name; 
unsigned char percent; 
QHashIterator<QByteArray,QTreeWidgetItem *> relate(hash); 
QHashIterator<QByteArray,int> relateInt(hashInt); 
//tree->setItemDelegate(new ImageDelegate(tree)); 
for(all = 0;all <Tag_data.length();all++) 
{ 
if(Tag_data.at(all+4) == 0) 
{ 
all = all + Tag_data.at(all +2)-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()) 
{ 
QString TagString; 
int i=0; 
for(int str = 0;str <Tag_name.length()*3-2;) 
{ 
TagString[str] = Tag_name.toHex().at(i); 
TagString[str+1] = Tag_name.toHex().at(i+1); 
if(str + 2 < Tag_name.length()*3-2) 
{ 
TagString[str+2] = '-'; 
} 
str = str + 3; 
i = i+2; 
} 
Tag_N1 = new QTreeWidgetItem(tree,QStringList(TagString)); 
hash.insert(Tag_name.toHex(),Tag_N1); 
value = percent; 
//tree->openPersistentEditor(Tag_N1,1); 
//tree->setIndexWidget(0,new QProgressBar(tree)); 
Tag_N1->setText(1,QString::number(percent)+"%"); 
int degree = 1; 
Tag_N1->setText(2,QString::number(degree)); 
hashInt.insert(Tag_name.toHex(),degree); 
} 
int size = 1; 
while (relate.hasNext()) 
{ 
relate.next(); 
if(relate.key() == Tag_name.toHex()) 
{ 
relate.value()->setText(1,QString::number(percent)+"%"); 
// value = percent; 
// tree->openPersistentEditor(relate.value(),1); 
while(relateInt.hasNext()) 
{ 
relateInt.next(); 
if(relateInt.key() == Tag_name.toHex()) 
{ 
int IntTemp = relateInt.value(); 
relate.value()->setText(2,QString::number(++IntTemp)); 
hashInt[Tag_name.toHex()] = IntTemp; 
} 
} 
break; 
} 
if(relate.key() != Tag_name.toHex()) 
{ 
if(hash.size() == size) 
{ 
QString TagString; 
int i=0; 
for(int str = 0;str <Tag_name.length()*3-2;) 
{ 
TagString[str] = Tag_name.toHex().at(i); 
TagString[str+1] = Tag_name.toHex().at(i+1); 
if(str + 2 < Tag_name.length()*3-2) 
{ 
TagString[str+2] = '-'; 
} 
str = str + 3; 
i = i+2; 
} 
Tag_N1 = new QTreeWidgetItem(tree,QStringList(TagString)); 
hash.insert(Tag_name.toHex(),Tag_N1); 
// tree->openPersistentEditor(Tag_N1,1); 
// value = percent; 
Tag_N1->setText(1,QString::number(percent)+"%"); 
int degree = 1; 
Tag_N1->setText(2,QString::number(degree)); 
hashInt.insert(Tag_name.toHex(),degree); 
} 
}size++; 
} 
} 
} 
return 1; 
}。实现的功能是树状显示
数据。比较第一列,更新第二列。目前注释掉的是加载进度条的代码。现在只能按照百分数显示第二列。明白的高手具体点给点提示。纠结好久了。菜鸟啊我!高手的一言半语看不明白啊! 
[ 此帖被aishang在2011-04-13 21:24重新编辑 ]