Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. When using a Tree Widget how do I Reinsert what I want the tree to display
Forum Updated to NodeBB v4.3 + New Features

When using a Tree Widget how do I Reinsert what I want the tree to display

Scheduled Pinned Locked Moved Unsolved General and Desktop
5 Posts 3 Posters 279 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    AI_Messiah
    wrote on last edited by
    #1

    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;
    }
    
    JonBJ 1 Reply Last reply
    0
    • A AI_Messiah

      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;
      }
      
      JonBJ Offline
      JonBJ Offline
      JonB
      wrote on last edited by
      #2

      @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?

      1 Reply Last reply
      0
      • A Offline
        A Offline
        AI_Messiah
        wrote on last edited by
        #3

        I would like to be able to erase the tree and insert the values again.

        Christian EhrlicherC 1 Reply Last reply
        0
        • A AI_Messiah

          I would like to be able to erase the tree and insert the values again.

          Christian EhrlicherC Offline
          Christian EhrlicherC Offline
          Christian Ehrlicher
          Lifetime Qt Champion
          wrote on last edited by
          #4

          @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.

          Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
          Visit the Qt Academy at https://academy.qt.io/catalog

          1 Reply Last reply
          1
          • A Offline
            A Offline
            AI_Messiah
            wrote on last edited by
            #5

            I forgot to use the clear() method.

            1 Reply Last reply
            0

            • Login

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • Users
            • Groups
            • Search
            • Get Qt Extensions
            • Unsolved