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. Problem with QTableWidget.
QtWS25 Last Chance

Problem with QTableWidget.

Scheduled Pinned Locked Moved General and Desktop
2 Posts 2 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.
  • O Offline
    O Offline
    Overflowz
    wrote on last edited by
    #1

    Hi, I'm having trouble with QTableWidget, I ca't understand a lot of things in it.
    First of all, whenever I'm using table->setRowCount(0);
    RowCount = 0, but after using insertRow(rowCount); it just increases and increases.
    Take a look to following code.

    [code]int rowCount = table->rowCount(); //row count = 0
    table->insertRow(rowCount); //row count = 1
    table->setRowCount(0); //rowCount should be 0;
    rowCount = table->rowCount(); //MUST be 0.
    table->insertRow(rowCount); //row count = 2. WHY?[/code]

    I also tried removeRow(i) (in loop) and then setRowCount(0); but still same result. using Windows 7 x64.

    1 Reply Last reply
    0
    • Q Offline
      Q Offline
      QMartin
      wrote on last edited by
      #2

      Hello!

      Wow, I suppose you have been waiting a while for an answer. I have tried this piece of code, check it yourself:

      @
      #include <QApplication>
      #include <QTableWidget>
      #include <iostream>

      int main(int argc, char *argv[])
      {
      QApplication a(argc, argv);
      QTableWidget *table = new QTableWidget(10, 10);
      std::cout << "Number of rows: " << table->rowCount() << std::endl;
      std::cout << "Number of columns: " << table->columnCount() << std::endl;
      table->setRowCount(0);
      table->setColumnCount(0);
      std::cout << "Number of rows once setRowCount(0): " << table->rowCount() << std::endl;
      std::cout << "Number of columns once setColumnCount(0): " << table->columnCount() << std::endl;
      table->insertRow(0);
      table->insertColumn(0);
      std::cout << "Number of rows once insertRow(0): " << table->rowCount() << std::endl;
      std::cout << "Number of columns once insertColumn(0): " << table->columnCount() << std::endl;
      //Now yor example
      //reset
      table->setRowCount(0);
      table->setColumnCount(0);

      int rowCount = table->rowCount(); //row count = 0
      std::cout << "table->rowCount()" << std::endl;
      std::cout << "rowCount is: " << rowCount << std::endl;
      std::cout << "While the number of rows is: " << table->rowCount() << std::endl;
      table->insertRow(rowCount); //row count = 1
      std::cout << "insertRow(rowCount)" << std::endl;
      std::cout << "rowCount is: " << rowCount << std::endl;
      std::cout << "While the number of rows is: " << table->rowCount() << std::endl;
      table->setRowCount(0); //rowCount should be 0;
      std::cout << "setRowCount(0)" << std::endl;
      std::cout << "rowCount is: " << rowCount << std::endl;
      std::cout << "While the number of rows is: " << table->rowCount() << std::endl;
      rowCount = table->rowCount(); //MUST be 0.
      std::cout << "table->rowCount()" << std::endl;
      std::cout << "rowCount is: " << rowCount << std::endl;
      std::cout << "While the number of rows is: " << table->rowCount() << std::endl;
      table->insertRow(rowCount); //row count = 2. WHY?
      std::cout << "insertRow(rowCount)" << std::endl;
      std::cout << "Finally, rowCount is: " << rowCount << std::endl;
      std::cout << "While the number of rows, after the insert is: " << table->rowCount() << std::endl;
      

      //Not shown although executed ^_^

      table->setRowCount(9);
      table->show();
      
      return a.exec&#40;&#41;;
      

      }@

      Output is as follows:

      Number of rows: 10
      Number of columns: 10
      Number of rows once setRowCount(0): 0
      Number of columns once setColumnCount(0): 0
      Number of rows once insertRow(0): 1
      Number of columns once insertColumn(0): 1
      table->rowCount()
      rowCount is: 0
      While the number of rows is: 0
      insertRow(rowCount)
      rowCount is: 0
      While the number of rows is: 1
      setRowCount(0)
      rowCount is: 0
      While the number of rows is: 0
      table->rowCount()
      rowCount is: 0
      While the number of rows is: 0
      insertRow(rowCount)
      Finally, rowCount is: 0
      While the number of rows, after the insert is: 1

      Let me ask you if your are using your own model (your own data type) for the QTableWidgetItem? If this is the case, then you should use "QTableView":http://qt-project.org/doc/qt-4.8/qtableview.html#public-functions for your purposes. So maybe you are only inserting rows with an accumulative effect... Once I tried to add Items to a QComboBox using my own model, and removeItem() didn't have any effect at all, I had to remove the data from the model. Then, automatically, its item was removed from the QComboBox.

      Hope this helped!

      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