• 5462阅读
  • 1回复

[提问]treewidget加载进度条。进度条刷新的问题。高手花点耐心指教下 [复制链接]

上一主题 下一主题
离线aishang
 
只看楼主 倒序阅读 楼主  发表于: 2011-04-13
直接上代码:
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重新编辑 ]
离线liuqiaoping

只看该作者 1楼 发表于: 2022-04-01
我说进来找答案的
快速回复
限100 字节
 
上一个 下一个