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. Adding qtablewidget items to vector
Forum Update on Monday, May 27th 2025

Adding qtablewidget items to vector

Scheduled Pinned Locked Moved Unsolved General and Desktop
13 Posts 4 Posters 1.4k 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.
  • K Offline
    K Offline
    Kiboshi
    wrote on last edited by
    #1

    Hello. I am trying to add the items of the last row only of my qtablewidget into a vector<int>. Thanks!

    ODБOïO 1 Reply Last reply
    0
    • K Kiboshi

      Hello. I am trying to add the items of the last row only of my qtablewidget into a vector<int>. Thanks!

      ODБOïO Offline
      ODБOïO Offline
      ODБOï
      wrote on last edited by
      #2

      @Kiboshi awesome !

      You can post here if you have an issue with that

      1 Reply Last reply
      1
      • K Offline
        K Offline
        Kiboshi
        wrote on last edited by
        #3

        Below is my approach. But it does not get the last row of my qtablewidget. "Input_table" is the name of my qtablewidget.

        std::vector<int> tableoperatations::getdestination()
        {
        std::vector <int> destination;
        int row = this->input_table->rowCount()-1;
        for(int i=0;i<=this->input_table->columnCount();i++)
        {
        destination.push_back(this->input_table->item(row, i)->text().toInt());
        }
        return destination;
        }

        JonBJ 1 Reply Last reply
        0
        • SGaistS Offline
          SGaistS Offline
          SGaist
          Lifetime Qt Champion
          wrote on last edited by
          #4

          Hi,

          What row does it get ?

          Interested in AI ? www.idiap.ch
          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          0
          • K Kiboshi

            Below is my approach. But it does not get the last row of my qtablewidget. "Input_table" is the name of my qtablewidget.

            std::vector<int> tableoperatations::getdestination()
            {
            std::vector <int> destination;
            int row = this->input_table->rowCount()-1;
            for(int i=0;i<=this->input_table->columnCount();i++)
            {
            destination.push_back(this->input_table->item(row, i)->text().toInt());
            }
            return destination;
            }

            JonBJ Offline
            JonBJ Offline
            JonB
            wrote on last edited by JonB
            #5

            @Kiboshi said in Adding qtablewidget items to vector:

            for(int i=0;i<=this->input_table->columnCount();i++)
            destination.push_back(this->input_table->item(row, i)->text().toInt());

            I'm not saying it's your issue, but this does not look good. Does item(row, i) not error? i <= this->input_table->columnCount(), that <=?

            1 Reply Last reply
            3
            • K Offline
              K Offline
              Kiboshi
              wrote on last edited by
              #6
              This post is deleted!
              1 Reply Last reply
              0
              • K Offline
                K Offline
                Kiboshi
                wrote on last edited by
                #7

                Currently I am facing a problem where my destination vector is inacessible when I debug the program. However my "source" vector has successfully obtain only the last column.

                Below is my code:

                tableoperatations::tableoperatations(QWidget *parent, int a, int b) : QDialog(parent)
                {
                input_table = new QTableWidget;
                input_table->setRowCount(a+1);
                input_table->setColumnCount(b+1);
                for(int i=0;i<b;++i){
                input_table->setHorizontalHeaderItem(i, new QTableWidgetItem);
                Q_ASSUME(input_table->model()->setHeaderData(i,Qt::Horizontal,QStringLiteral("D%1").arg(i+1)));
                }
                for(int i=0;i<a;++i){
                input_table->setVerticalHeaderItem(i, new QTableWidgetItem);
                Q_ASSUME(input_table->model()->setHeaderData(i,Qt::Vertical,QStringLiteral("S%1").arg(i+1)));
                }
                for (int i = 0; i < input_table->rowCount(); i++){
                for (int j = 0; j < input_table->columnCount(); j++) {
                QTableWidgetItem *item = new
                QTableWidgetItem(tr("-"));
                input_table->setItem(i, j, item);
                }
                }
                input_table->setVerticalHeaderItem(a, new QTableWidgetItem);
                input_table->model()->setHeaderData(a,Qt::Vertical,QStringLiteral("Demand"));
                input_table->setHorizontalHeaderItem(b, new QTableWidgetItem);
                input_table->model()->setHeaderData(b,Qt::Horizontal,QStringLiteral("Supply"));
                input_table->removeCellWidget(a,b);
                calc_button = new QPushButton("Calculate", this);
                connect(calc_button, SIGNAL (clicked()),this, SLOT (calculate()));
                result=new QTextEdit("");
                QHBoxLayout *layout = new QHBoxLayout;
                layout->addWidget(input_table);
                layout->addWidget(calc_button);
                layout->addWidget(result);
                setLayout(layout);
                }

                std::vector<int> tableoperatations::getdestination()
                {
                std::vector <int> destination;
                int row = this->input_table->rowCount();
                for(int i=0;i<this->input_table->columnCount();i++)
                {
                destination.push_back(this->input_table->item(i, row)->text().toInt());
                }
                return destination;
                }

                std::vector<int> tableoperatations::getsource()
                {
                std::vector <int> source;
                int column = this->input_table->columnCount()-1;
                for(int j=0;j<=this->input_table->rowCount();j++)
                {
                source.push_back(this->input_table->item(j, column)->text().toInt());
                }
                return source;
                }

                JonBJ 1 Reply Last reply
                0
                • K Kiboshi

                  Currently I am facing a problem where my destination vector is inacessible when I debug the program. However my "source" vector has successfully obtain only the last column.

                  Below is my code:

                  tableoperatations::tableoperatations(QWidget *parent, int a, int b) : QDialog(parent)
                  {
                  input_table = new QTableWidget;
                  input_table->setRowCount(a+1);
                  input_table->setColumnCount(b+1);
                  for(int i=0;i<b;++i){
                  input_table->setHorizontalHeaderItem(i, new QTableWidgetItem);
                  Q_ASSUME(input_table->model()->setHeaderData(i,Qt::Horizontal,QStringLiteral("D%1").arg(i+1)));
                  }
                  for(int i=0;i<a;++i){
                  input_table->setVerticalHeaderItem(i, new QTableWidgetItem);
                  Q_ASSUME(input_table->model()->setHeaderData(i,Qt::Vertical,QStringLiteral("S%1").arg(i+1)));
                  }
                  for (int i = 0; i < input_table->rowCount(); i++){
                  for (int j = 0; j < input_table->columnCount(); j++) {
                  QTableWidgetItem *item = new
                  QTableWidgetItem(tr("-"));
                  input_table->setItem(i, j, item);
                  }
                  }
                  input_table->setVerticalHeaderItem(a, new QTableWidgetItem);
                  input_table->model()->setHeaderData(a,Qt::Vertical,QStringLiteral("Demand"));
                  input_table->setHorizontalHeaderItem(b, new QTableWidgetItem);
                  input_table->model()->setHeaderData(b,Qt::Horizontal,QStringLiteral("Supply"));
                  input_table->removeCellWidget(a,b);
                  calc_button = new QPushButton("Calculate", this);
                  connect(calc_button, SIGNAL (clicked()),this, SLOT (calculate()));
                  result=new QTextEdit("");
                  QHBoxLayout *layout = new QHBoxLayout;
                  layout->addWidget(input_table);
                  layout->addWidget(calc_button);
                  layout->addWidget(result);
                  setLayout(layout);
                  }

                  std::vector<int> tableoperatations::getdestination()
                  {
                  std::vector <int> destination;
                  int row = this->input_table->rowCount();
                  for(int i=0;i<this->input_table->columnCount();i++)
                  {
                  destination.push_back(this->input_table->item(i, row)->text().toInt());
                  }
                  return destination;
                  }

                  std::vector<int> tableoperatations::getsource()
                  {
                  std::vector <int> source;
                  int column = this->input_table->columnCount()-1;
                  for(int j=0;j<=this->input_table->rowCount();j++)
                  {
                  source.push_back(this->input_table->item(j, column)->text().toInt());
                  }
                  return source;
                  }

                  JonBJ Offline
                  JonBJ Offline
                  JonB
                  wrote on last edited by JonB
                  #8

                  @Kiboshi said in Adding qtablewidget items to vector:

                  int row = this->input_table->rowCount();
                  for(int i=0;i<this->input_table->columnCount();i++)
                  {
                  destination.push_back(this->input_table->item(i, row)->text().toInt());

                  Now row is out of range.

                  for(int j=0;j<=this->input_table->rowCount();j++)
                  {
                  source.push_back(this->input_table->item(j, column)->text().toInt());

                  Same for j.

                  getdestination() uses a fixed row and varies the column. getsource() uses a varying row and a fixed column. Why is that?

                  getdestination() uses row = rowCount() to access input_table->item(i, row), i.e. as a column index. Why is that?

                  You really need to sort out your column & row indexes.

                  K 1 Reply Last reply
                  0
                  • K Offline
                    K Offline
                    Kiboshi
                    wrote on last edited by
                    #9

                    My bad. Now i have fixed it but my "destination" vector is not accessible still. Any help would be appreciated. Thanks

                    tableoperatations::tableoperatations(QWidget *parent, int a, int b) : QDialog(parent)
                    {
                    input_table = new QTableWidget;
                    input_table->setRowCount(a+1);
                    input_table->setColumnCount(b+1);
                    for(int i=0;i<b;++i){
                    input_table->setHorizontalHeaderItem(i, new QTableWidgetItem);
                    Q_ASSUME(input_table->model()->setHeaderData(i,Qt::Horizontal,QStringLiteral("D%1").arg(i+1)));
                    }
                    for(int i=0;i<a;++i){
                    input_table->setVerticalHeaderItem(i, new QTableWidgetItem);
                    Q_ASSUME(input_table->model()->setHeaderData(i,Qt::Vertical,QStringLiteral("S%1").arg(i+1)));
                    }
                    for (int i = 0; i < input_table->rowCount(); i++){
                    for (int j = 0; j < input_table->columnCount(); j++) {
                    QTableWidgetItem *item = new
                    QTableWidgetItem(tr("-"));
                    input_table->setItem(i, j, item);
                    }
                    }
                    input_table->setVerticalHeaderItem(a, new QTableWidgetItem);
                    input_table->model()->setHeaderData(a,Qt::Vertical,QStringLiteral("Demand"));
                    input_table->setHorizontalHeaderItem(b, new QTableWidgetItem);
                    input_table->model()->setHeaderData(b,Qt::Horizontal,QStringLiteral("Supply"));
                    input_table->removeCellWidget(a,b);
                    calc_button = new QPushButton("Calculate", this);
                    connect(calc_button, SIGNAL (clicked()),this, SLOT (calculate()));
                    result=new QTextEdit("");
                    QHBoxLayout *layout = new QHBoxLayout;
                    layout->addWidget(input_table);
                    layout->addWidget(calc_button);
                    layout->addWidget(result);
                    setLayout(layout);
                    }

                    std::vector<std::vector<int>> tableoperatations::getcost()
                    {
                    std::vector<std::vector <int>> cost;
                    for(int i=0;i<this->input_table->rowCount()-1;i++)
                    {
                    std::vector <int> row;
                    for(int j=0;j<this->input_table->columnCount()-1;j++)
                    {
                    row.push_back(this->input_table->item(i, j)->text().toInt());
                    }
                    cost.push_back(row);
                    }
                    return cost;
                    }

                    std::vector<int> tableoperatations::getdestination()
                    {
                    std::vector <int> destination;
                    int row = this->input_table->rowCount();
                    for(int i=0;i<this->input_table->columnCount();i++)
                    {
                    destination.push_back(this->input_table->item(row,i)->text().toInt());
                    }
                    return destination;
                    }

                    std::vector<int> tableoperatations::getsource()
                    {
                    std::vector <int> source;
                    int column = this->input_table->columnCount()-1;
                    for(int j=0;j<=this->input_table->rowCount();j++)
                    {
                    source.push_back(this->input_table->item(j, column)->text().toInt());
                    }
                    return source;
                    }

                    JonBJ 1 Reply Last reply
                    0
                    • K Kiboshi

                      My bad. Now i have fixed it but my "destination" vector is not accessible still. Any help would be appreciated. Thanks

                      tableoperatations::tableoperatations(QWidget *parent, int a, int b) : QDialog(parent)
                      {
                      input_table = new QTableWidget;
                      input_table->setRowCount(a+1);
                      input_table->setColumnCount(b+1);
                      for(int i=0;i<b;++i){
                      input_table->setHorizontalHeaderItem(i, new QTableWidgetItem);
                      Q_ASSUME(input_table->model()->setHeaderData(i,Qt::Horizontal,QStringLiteral("D%1").arg(i+1)));
                      }
                      for(int i=0;i<a;++i){
                      input_table->setVerticalHeaderItem(i, new QTableWidgetItem);
                      Q_ASSUME(input_table->model()->setHeaderData(i,Qt::Vertical,QStringLiteral("S%1").arg(i+1)));
                      }
                      for (int i = 0; i < input_table->rowCount(); i++){
                      for (int j = 0; j < input_table->columnCount(); j++) {
                      QTableWidgetItem *item = new
                      QTableWidgetItem(tr("-"));
                      input_table->setItem(i, j, item);
                      }
                      }
                      input_table->setVerticalHeaderItem(a, new QTableWidgetItem);
                      input_table->model()->setHeaderData(a,Qt::Vertical,QStringLiteral("Demand"));
                      input_table->setHorizontalHeaderItem(b, new QTableWidgetItem);
                      input_table->model()->setHeaderData(b,Qt::Horizontal,QStringLiteral("Supply"));
                      input_table->removeCellWidget(a,b);
                      calc_button = new QPushButton("Calculate", this);
                      connect(calc_button, SIGNAL (clicked()),this, SLOT (calculate()));
                      result=new QTextEdit("");
                      QHBoxLayout *layout = new QHBoxLayout;
                      layout->addWidget(input_table);
                      layout->addWidget(calc_button);
                      layout->addWidget(result);
                      setLayout(layout);
                      }

                      std::vector<std::vector<int>> tableoperatations::getcost()
                      {
                      std::vector<std::vector <int>> cost;
                      for(int i=0;i<this->input_table->rowCount()-1;i++)
                      {
                      std::vector <int> row;
                      for(int j=0;j<this->input_table->columnCount()-1;j++)
                      {
                      row.push_back(this->input_table->item(i, j)->text().toInt());
                      }
                      cost.push_back(row);
                      }
                      return cost;
                      }

                      std::vector<int> tableoperatations::getdestination()
                      {
                      std::vector <int> destination;
                      int row = this->input_table->rowCount();
                      for(int i=0;i<this->input_table->columnCount();i++)
                      {
                      destination.push_back(this->input_table->item(row,i)->text().toInt());
                      }
                      return destination;
                      }

                      std::vector<int> tableoperatations::getsource()
                      {
                      std::vector <int> source;
                      int column = this->input_table->columnCount()-1;
                      for(int j=0;j<=this->input_table->rowCount();j++)
                      {
                      source.push_back(this->input_table->item(j, column)->text().toInt());
                      }
                      return source;
                      }

                      JonBJ Offline
                      JonBJ Offline
                      JonB
                      wrote on last edited by JonB
                      #10

                      @Kiboshi
                      You haven't fixed all the points, can't keep saying the same things. Get your loop limits correct. There's no point keep pasting whole code without addressing the issues.

                      1 Reply Last reply
                      1
                      • JonBJ JonB

                        @Kiboshi said in Adding qtablewidget items to vector:

                        int row = this->input_table->rowCount();
                        for(int i=0;i<this->input_table->columnCount();i++)
                        {
                        destination.push_back(this->input_table->item(i, row)->text().toInt());

                        Now row is out of range.

                        for(int j=0;j<=this->input_table->rowCount();j++)
                        {
                        source.push_back(this->input_table->item(j, column)->text().toInt());

                        Same for j.

                        getdestination() uses a fixed row and varies the column. getsource() uses a varying row and a fixed column. Why is that?

                        getdestination() uses row = rowCount() to access input_table->item(i, row), i.e. as a column index. Why is that?

                        You really need to sort out your column & row indexes.

                        K Offline
                        K Offline
                        Kiboshi
                        wrote on last edited by
                        #11

                        @JonB In getdestination(), Im trying to get all the user input in the last row of my table. Meanwhile in getsource(), Im trying to get all the user input in the last column of the table.
                        Screen Shot 2019-12-21 at 02.26.57.png

                        In this case, vector destination would be[2,3,4,0] and vector source would be[2,5,3,0]

                        1 Reply Last reply
                        0
                        • K Offline
                          K Offline
                          Kiboshi
                          wrote on last edited by
                          #12

                          I was able to solve this problem. Thanks @SGaist @JonB @LeLev for your effort.

                          JonBJ 1 Reply Last reply
                          0
                          • K Kiboshi

                            I was able to solve this problem. Thanks @SGaist @JonB @LeLev for your effort.

                            JonBJ Offline
                            JonBJ Offline
                            JonB
                            wrote on last edited by
                            #13

                            @Kiboshi

                            int row = this->input_table->rowCount();
                            for(int j=0;j<=this->input_table->rowCount();j++)

                            I trust you altered at least the above two lines!

                            1 Reply Last reply
                            2

                            • Login

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