When using a Tree Widget how do I Reinsert what I want the tree to display
-
So what I have is a Tree Widget I am using it for some classes where their contents will change. I don't want to add the results of a change to what I already have displayed.
this is what I am doing.
void Dialog::addRoot(QString name, QString desc) { QTreeWidgetItem *itm = new QTreeWidgetItem(ui->treeWidget); itm->setText(0, name); itm->setText(1, desc); ui->treeWidget->addTopLevelItem(itm); node aprt; DefString chpar; for (int i=0;i<par.subNodes1.size();i++){ aprt = par.subNodes1[i]; chpar.convert(aprt); addChild(chpar, itm); } for (int i=0;i<par.subNodes2.size();i++){ aprt = par.subNodes2[i]; chpar.convert(aprt); addChild(chpar, itm); } } void Dialog::addChild(DefString defs, QTreeWidgetItem *parent) { QTreeWidgetItem *itm = new QTreeWidgetItem(); itm->setText(0, defs.getFirst()); itm->setText(1, defs.getSecond()); parent->addChild(itm); node aprt; DefString chpar; for (int i=0;i<defs.subNodes1.size();i++){ aprt = defs.subNodes1[i]; chpar.convert(aprt); addChild(chpar, itm); } for (int i=0;i<defs.subNodes2.size();i++){ aprt = defs.subNodes2[i]; chpar.convert(aprt); addChild(chpar, itm); } } void Dialog::on_btn_run_clicked() { lstruct.update(); ui->lbl_lnum->setText(QString::number(lstruct.curline)); ui->lbl_ltext->setText(lstruct.lines.at(lstruct.curline)); tree1->clear(); node anod = lstruct.curexam; par1.convert(anod); QTreeWidgetItem *itm = new QTreeWidgetItem(ui->treeWidget); itm->setText(0, par1.getFirst()); itm->setText(1, par1.getSecond()); tree1->addTopLevelItem(itm); label->setText(QString::number(lstruct.curlev)); anod = lstruct.tree; par.convert(anod); addRoot(par.getFirst(), par.getSecond()); } void Dialog::on_btn_make_clicked() { ui->treeWidget->clear(); QString apic; QString line; QString script = ui->textEdit->toPlainText() + "\n"; for (int i=0;i < script.length();i++){ apic = script.mid(i, 1); if (apic == "\n"){ lstruct.takeLine(line); line = ""; }else{ line += apic; } } lstruct.curline = 0; node snod = lstruct.tree; par.convert(snod); addRoot(par.getFirst(), par.getSecond()); } void DefString::convert(node anod) { isWhile = anod.isWhile; start = anod.start; middle = anod.middle; end = anod.end; curnode1 = anod.curnode1; curnode2 = anod.curnode2; seclist = anod.seclist; goback = anod.goback; braover = anod.braover; firinc = anod.firinc; subNodes1 = anod.subNodes1; subNodes2 = anod.subNodes2; } QString DefString::getFirst() { return "While\nStart\nMiddle\nEnd\nCurrent1\nCurrent2\nSecond\nGoBack\nBranch\nFirInc"; } QString DefString::getSecond() { QString ret; if (isWhile){ ret = "True\n"; }else{ ret = "False\n"; } ret += QString::number(start) + "\n"; ret += QString::number(middle) + "\n"; ret += QString::number(end) + "\n"; ret += QString::number(curnode1) + "\n"; ret += QString::number(curnode2) + "\n"; if (seclist){ ret += "True\n"; }else{ ret += "False\n"; } if (goback){ ret += "True\n"; }else{ ret += "False\n"; } if (braover){ ret += "True\n"; }else{ ret += "False\n"; } if (firinc){ ret += "True\n"; }else{ ret += "False\n"; } return ret; }
-
So what I have is a Tree Widget I am using it for some classes where their contents will change. I don't want to add the results of a change to what I already have displayed.
this is what I am doing.
void Dialog::addRoot(QString name, QString desc) { QTreeWidgetItem *itm = new QTreeWidgetItem(ui->treeWidget); itm->setText(0, name); itm->setText(1, desc); ui->treeWidget->addTopLevelItem(itm); node aprt; DefString chpar; for (int i=0;i<par.subNodes1.size();i++){ aprt = par.subNodes1[i]; chpar.convert(aprt); addChild(chpar, itm); } for (int i=0;i<par.subNodes2.size();i++){ aprt = par.subNodes2[i]; chpar.convert(aprt); addChild(chpar, itm); } } void Dialog::addChild(DefString defs, QTreeWidgetItem *parent) { QTreeWidgetItem *itm = new QTreeWidgetItem(); itm->setText(0, defs.getFirst()); itm->setText(1, defs.getSecond()); parent->addChild(itm); node aprt; DefString chpar; for (int i=0;i<defs.subNodes1.size();i++){ aprt = defs.subNodes1[i]; chpar.convert(aprt); addChild(chpar, itm); } for (int i=0;i<defs.subNodes2.size();i++){ aprt = defs.subNodes2[i]; chpar.convert(aprt); addChild(chpar, itm); } } void Dialog::on_btn_run_clicked() { lstruct.update(); ui->lbl_lnum->setText(QString::number(lstruct.curline)); ui->lbl_ltext->setText(lstruct.lines.at(lstruct.curline)); tree1->clear(); node anod = lstruct.curexam; par1.convert(anod); QTreeWidgetItem *itm = new QTreeWidgetItem(ui->treeWidget); itm->setText(0, par1.getFirst()); itm->setText(1, par1.getSecond()); tree1->addTopLevelItem(itm); label->setText(QString::number(lstruct.curlev)); anod = lstruct.tree; par.convert(anod); addRoot(par.getFirst(), par.getSecond()); } void Dialog::on_btn_make_clicked() { ui->treeWidget->clear(); QString apic; QString line; QString script = ui->textEdit->toPlainText() + "\n"; for (int i=0;i < script.length();i++){ apic = script.mid(i, 1); if (apic == "\n"){ lstruct.takeLine(line); line = ""; }else{ line += apic; } } lstruct.curline = 0; node snod = lstruct.tree; par.convert(snod); addRoot(par.getFirst(), par.getSecond()); } void DefString::convert(node anod) { isWhile = anod.isWhile; start = anod.start; middle = anod.middle; end = anod.end; curnode1 = anod.curnode1; curnode2 = anod.curnode2; seclist = anod.seclist; goback = anod.goback; braover = anod.braover; firinc = anod.firinc; subNodes1 = anod.subNodes1; subNodes2 = anod.subNodes2; } QString DefString::getFirst() { return "While\nStart\nMiddle\nEnd\nCurrent1\nCurrent2\nSecond\nGoBack\nBranch\nFirInc"; } QString DefString::getSecond() { QString ret; if (isWhile){ ret = "True\n"; }else{ ret = "False\n"; } ret += QString::number(start) + "\n"; ret += QString::number(middle) + "\n"; ret += QString::number(end) + "\n"; ret += QString::number(curnode1) + "\n"; ret += QString::number(curnode2) + "\n"; if (seclist){ ret += "True\n"; }else{ ret += "False\n"; } if (goback){ ret += "True\n"; }else{ ret += "False\n"; } if (braover){ ret += "True\n"; }else{ ret += "False\n"; } if (firinc){ ret += "True\n"; }else{ ret += "False\n"; } return ret; }
@AI_Messiah
There is a fair amount of code here, probably most of it not relevant. I do not understand what you are actually asking? What does it do/not do that is not what you want? Which bit of it is at issue? -
I would like to be able to erase the tree and insert the values again.
-
I would like to be able to erase the tree and insert the values again.
@AI_Messiah said in When using a Tree Widget how do I Reinsert what I want the tree to display:
I would like to be able to erase the tree and insert the values again.
You have to delete all top level QTreeWidgetItems.
-
I forgot to use the clear() method.