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. [SOLVED] Insert row from Qtableview to another
Forum Updated to NodeBB v4.3 + New Features

[SOLVED] Insert row from Qtableview to another

Scheduled Pinned Locked Moved General and Desktop
68 Posts 3 Posters 34.3k Views 1 Watching
  • 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.
  • JKSHJ Offline
    JKSHJ Offline
    JKSH
    Moderators
    wrote on last edited by
    #59
    1. This is a memory leak:
      @
      item->setIcon( *(new QIcon("imgs/Edit-icon.png")));
      @
      setIcon() will make a copy of your icon, but the original stays in memory forever.

    2. Your variable names have mixed style -- some start with upper-case (e.g. CurrentRow), but some start with lower-case (e.g. isCurrentRowLast). Choose one style and don't mix them.

    In Qt's style, all function names and variable names start with lower-case, and all class names start with upper-case.

    1. Your checking is complicated:
      @
      if( !isCurrentCellEmpty)
      (isCurrentRowLast) ? this->insertRow(this->rowCount()) : QTableWidget::keyPressEvent(event) ;
      else
      QTableWidget::keyPressEvent(event);
      @
      Just write if (!isCurrentCellEmpty && isCurrentRowLast). Your other case has the same issue.

    Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

    1 Reply Last reply
    0
    • A Offline
      A Offline
      advseo32
      wrote on last edited by
      #60

      Ok

      this my final version (Thank's for your advices )

      @void MonTableauWidget::keyPressEvent(QKeyEvent *event)
      {

      int LastRow =qMax(0,this->rowCount()-1);
      int CurrentRow = this->currentRow() ;
      bool IsCurrentRowLast = (LastRow == CurrentRow);
      bool IsCurrentCellEmpty = this->item(LastRow,1) == 0;
      QTableWidgetItem * item = new QTableWidgetItem() ;
      QIcon *ShowEditSignIcon = new QIcon("imgs/Edit-icon.png");
      switch (event->key()) {
      case Qt::Key_Down :
          if(IsCurrentRowLast && !IsCurrentCellEmpty)
            this->insertRow(this->rowCount()) ;
          else
            QTableWidget::keyPressEvent(event);
          break;
      case Qt::Key_Up :
          if(LastRow > 0 && IsCurrentCellEmpty && IsCurrentRowLast)
           this->removeRow(LastRow) ;
          else
            QTableWidget::keyPressEvent(event);
          break;
      default:
          item->setIcon(*ShowEditSignIcon);
          delete ShowEditSignIcon;
          this->setVerticalHeaderItem(CurrentRow,item);
          QTableWidget::keyPressEvent(event);
          break;
      }
      

      }
      @

      1 Reply Last reply
      0
      • JKSHJ Offline
        JKSHJ Offline
        JKSH
        Moderators
        wrote on last edited by
        #61

        That looks a lot tidier, well done :)

        You don't have to create a QIcon on the heap with new QIcon(). Just create it on the stack (no pointer) with QIcon ShowEditSignIcon("imgs/Edit-icon.png"); -- then you don't have to delete it yourself.

        Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

        1 Reply Last reply
        0
        • A Offline
          A Offline
          advseo32
          wrote on last edited by
          #62

          Thank's JKSH and SGaist, now i can be said, i have figured out more than 30% of Model/view architecture in Qt

          if i have another question, i will post her , i will create another thread ?

          1 Reply Last reply
          0
          • JKSHJ Offline
            JKSHJ Offline
            JKSH
            Moderators
            wrote on last edited by
            #63

            You're welcome. Good luck with Qt programming. :)

            You should start new threads for new topics. Remember to provide details of what you already tried.

            Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

            1 Reply Last reply
            0
            • A Offline
              A Offline
              advseo32
              wrote on last edited by
              #64

              i start use the same strategy as we did with Qtablewidget but

              there is no setVerticalHeaderItem(row,item) function like Qtablewidget(it seems that QtableWidget is very easy than Qtableview

              my question her :

              should i sublcass QHeaderView class and implement neccessary function
              after setting up vertical header @setVerticalHeader(QHeaderView * header)@

              or i can use another solution with out subclassing QheaderView ???

              1 Reply Last reply
              0
              • A Offline
                A Offline
                advseo32
                wrote on last edited by
                #65

                i have used this but no thing happened

                i use Qtableview with Qsqlquerymodel

                her is my code
                @ui->tableView->verticalHeader()->model()->
                setData(ui->tableView->verticalHeader()->model()->index(1,1),"**",Qt::DisplayRole) ;
                @

                1 Reply Last reply
                0
                • JKSHJ Offline
                  JKSHJ Offline
                  JKSH
                  Moderators
                  wrote on last edited by
                  #66

                  [quote author="advseo32" date="1375355486"]if i have another question, i will post her , i will create another thread ?[/quote]Why did you ask this question and then ignore my answer?

                  Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

                  1 Reply Last reply
                  0
                  • A Offline
                    A Offline
                    advseo32
                    wrote on last edited by
                    #67

                    i have posted this question because is similaire topic but now is Qtableview

                    Sorry, if i'm wrong , i will post another thread :)

                    1 Reply Last reply
                    0
                    • JKSHJ Offline
                      JKSHJ Offline
                      JKSH
                      Moderators
                      wrote on last edited by
                      #68

                      [quote author="advseo32" date="1375434213"]i have posted this question because is similaire topic but now is Qtableview

                      Sorry, if i'm wrong , i will post another thread :)[/quote]Yes, please post in a new thread. It is NOT similar.

                      Each thread is supposed to have 1 topic, but you already have 5 topics:

                      How to automatically insert a row at the end when the user clicks/presses a key there

                      How to check if a cell is empty

                      How to add custom symbols to the vertical header

                      How to check if the user selects a different row

                      How to check if the user has started typing into a row

                      (Your new topic) How to modify headers

                      The title of this thread is "Insert row from Qtableview to another", but topics 2-6 are not related to this.

                      Forums let users search old topics to find solutions solutions. But, if a thread has many topics that are not related to the title, it's hard for someone to search.

                      Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

                      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