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
Qt 6.11 is out! See what's new in the release blog

[SOLVED] Insert row from Qtableview to another

Scheduled Pinned Locked Moved General and Desktop
68 Posts 3 Posters 53.7k 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.
  • SGaistS Offline
    SGaistS Offline
    SGaist
    Lifetime Qt Champion
    wrote on last edited by
    #9

    Well then, use a QTableWidget for the editing part, unless you have a special table in your database for that.

    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
    • ? Offline
      ? Offline
      A Former User
      wrote on last edited by
      #10

      but how row can be added automaticelly , " Firstly the table has one row
      then the user fill that row, and when he clicks in Keydown, new row added

      1 Reply Last reply
      0
      • ? Offline
        ? Offline
        A Former User
        wrote on last edited by
        #11

        i want to like the video,

        https://www.youtube.com/watch?v=hkfmZwuc-YY

        when the user entre data new row created

        i can't post so i have modified this post

        i can't control the addition of rows

        her is my code

        @#include "mainwindow.h"

        MainWindow::MainWindow(QWidget *parent)
        : QWidget(parent)
        {

        tableNouveau = new QTableWidget;
        tableNouveau->setRowCount(1);
        tableNouveau->setColumnCount(5);
        QStringList list ;
        list <<"N°"<<  "Désignation" << "Qte" << "Prix/U" << "Totale" ;
        tableNouveau->setHorizontalHeaderLabels(list);
        connect(tableNouveau,SIGNAL(cellClicked(int,int)),this,SLOT(test(int,int))) ;
        QVBoxLayout *layoutPrincipale = new QVBoxLayout ;
        layoutPrincipale->addWidget(tableNouveau);
        setLayout(layoutPrincipale);
        

        }

        void MainWindow::test(int row, int col)
        {
        // if(!tableNouveau->item(row,col)->text().isEmpty())
        if(col==1)
        {
        tableNouveau->insertRow(1);
        }

        }

        MainWindow::~MainWindow()
        {

        }
        @

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

          When the user enters data, the QTableWidget will emit some "signals":http://qt-project.org/doc/qt-5.1/qtwidgets/qtablewidget.html#signals. You should create your own slot to handle the signal(s) that you want.

          Connect the signal to your slot. Inside your slot, call call "QTableWidget::insertRow()":http://qt-project.org/doc/qt-5.1/qtwidgets/qtablewidget.html#insertRow

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

          1 Reply Last reply
          0
          • ? Offline
            ? Offline
            A Former User
            wrote on last edited by
            #13

            i can’t control the addition of rows

            her is my code
            @
            #include "mainwindow.h"

            MainWindow::MainWindow(QWidget *parent)
                : QWidget(parent)
            {
             
                tableNouveau = new QTableWidget;
                tableNouveau->setRowCount(1);
                tableNouveau->setColumnCount(5);
                QStringList list ;
                list <<"N°"<<  "Désignation" << "Qte" << "Prix/U" << "Totale" ;
                tableNouveau->setHorizontalHeaderLabels(list);
                connect(tableNouveau,SIGNAL(cellClicked(int,int)),this,SLOT(test(int,int))) ;
                QVBoxLayout *layoutPrincipale = new QVBoxLayout ;
                layoutPrincipale->addWidget(tableNouveau);
                setLayout(layoutPrincipale);
             
             
             
            }
             
             
             
            void MainWindow::test(int row, int col)
            {
               // if(!tableNouveau->item(row,col)->text().isEmpty())
                    if(col==1)
                    {
                        tableNouveau->insertRow(1);
                    }
             
             
            }
             
            MainWindow::~MainWindow()
            {
               
            }
            

            @

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

              What do you mean by "I can't control" ?

              The code here will add a new row at row number 1 each time you click on a cell in the column 1.

              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
              • ? Offline
                ? Offline
                A Former User
                wrote on last edited by
                #15

                i want to add it at the end of the table every time

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

                  Then change 1 by tableNouveau->rowCount()

                  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
                  • ? Offline
                    ? Offline
                    A Former User
                    wrote on last edited by
                    #17

                    Wow, this works

                    Now, what i want exactly is

                    the user isn't able to add row until he fills all cells

                    then he clicks "Key_Down" to add new row ( so her i will catch Qkeypressevent)

                    Plz give somme hints, so i will try to implement this my selef and render the code for you to correct me

                    thank's a lot SGaist

                    1 Reply Last reply
                    0
                    • ? Offline
                      ? Offline
                      A Former User
                      wrote on last edited by
                      #18

                      i have tried to inherif from Qtablewidget and override keypressevent function

                      i have declared keypressevent function as signal

                      it works with this condition
                      @if ( event->key() == Qt::key_Down)@

                      but when i add more conditions the app crached

                      her is my code

                      customtablewidget class @class MonTableauWidget : public QTableWidget
                      {
                      Q_OBJECT
                      public:
                      explicit MonTableauWidget(QWidget *parent = 0);

                      signals:
                      void keyPressEvent(QKeyEvent *event);
                      public slots:

                      };
                      @

                      the main of classe @#include "montableauwidget.h"

                      MonTableauWidget::MonTableauWidget(QWidget *parent) :
                      QTableWidget(parent)
                      {

                      }

                      @

                      and her is my main where i tried to connect siganl with slot @#include "dialog.h"

                      Dialog::Dialog(QWidget *parent)
                      : QWidget(parent)
                      {
                      layoutPrincipale = new QVBoxLayout(this);
                      QPushButton *button = new QPushButton("Clear",this);
                      tableau = new MonTableauWidget(this);
                      tableau->setRowCount(1);
                      tableau->setColumnCount(4) ;
                      QKeyEvent event(QEvent::KeyPress, Qt::Key_Down, Qt::NoModifier);

                      QStringList list ;
                      list << "Désignation" << "Qte" << "Prix/U" << "Total";
                      tableau->setHorizontalHeaderLabels(list);
                      layoutPrincipale->addWidget(tableau);
                      layoutPrincipale->addWidget(button);
                      setLayout(layoutPrincipale);
                      connect(tableau,SIGNAL(cellChanged(int,int)),this,SLOT(addrow(int,int))) ;
                      connect(tableau,SIGNAL(keyPressEvent(QKeyEvent*)),this,SLOT(newRecod(QKeyEvent*)));
                      connect(button,SIGNAL(clicked()),tableau,SLOT(clear()));
                      

                      }

                      Dialog::~Dialog()
                      {

                      }

                      void Dialog::addrow(int row, int col)
                      {
                      if(col == 0)
                      tableau->insertRow(tableau->rowCount());
                      }
                      // her is the problem
                      void Dialog::newRecod(QKeyEvent *record)
                      {
                      QModelIndex index = tableau->currentIndex();
                      int row = index.column();
                      if(record->key() == Qt::Key_Down)
                      if(tableau->item(row,0)->text().isEmpty())
                      QMessageBox::information(this,"Empty Designation","Please Fill in the cell");
                      else
                      tableau->insertRow(tableau->rowCount());
                      }

                      @

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

                        keyPressEvent is not a signal, I would advise you to read its "documentation":http://qt-project.org/doc/qt-4.8/qabstractitemview.html#keyPressEvent

                        From your previous posts, and just to be sure, do you expect me to validate your work ?

                        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
                        • ? Offline
                          ? Offline
                          A Former User
                          wrote on last edited by
                          #20

                          bq. From your previous posts, and just to be sure, do you expect me to validate your work ?

                          sorry about that, i'm completely newbie , i have blocked to get a solution for my probelem to complete my first application

                          1 Reply Last reply
                          0
                          • ? Offline
                            ? Offline
                            A Former User
                            wrote on last edited by
                            #21

                            if i can't use keypressevent() as a signal

                            how i can handle this event " when the uesr click Key_Down new row added in the bottom "

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

                              It is explained in the function documentation

                              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
                              • ? Offline
                                ? Offline
                                A Former User
                                wrote on last edited by
                                #23

                                i still can't know what i do ,

                                subclass Qtablewidget and implement keypressevent
                                or use shortcuts .

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

                                  You can also use an event filter to catch that event, this really is up to you to choose the solution that meets your need

                                  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
                                  • ? Offline
                                    ? Offline
                                    A Former User
                                    wrote on last edited by
                                    #25

                                    i have implemented keypressEvent function

                                    and it works perfectly, but when i start to somme conditions the programme crashes

                                    her is my code @void MonTableauWidget::keyPressEvent(QKeyEvent *event)
                                    {
                                    int LastRow = this->rowCount();

                                    switch (event->key()) {
                                    case Qt::Key_Down :
                                    // the problem occured  when i added the line below if(!this->item(LastRow,0)->text().isEmpty())
                                        this->insertRow(this->rowCount());
                                        break;
                                    case Qt::Key_Up :
                                     this->removeRow(1);
                                        break;
                                    case Qt::Key_0 :
                                    
                                        QMessageBox::information(this,"Row coutn",QString::number( LastRow)) ;
                                        break;
                                    default:
                                        QTableWidget::keyPressEvent(event);
                                        break;
                                    }
                                    

                                    }
                                    @

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

                                      @removeRow(1); << What would happen if you don't have a row number 1 ?@

                                      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
                                      • ? Offline
                                        ? Offline
                                        A Former User
                                        wrote on last edited by
                                        #27

                                        i have used the debugger to determine what's the issue
                                        and i think the issue is located her
                                        because when i delete this line every thing works perfectly
                                        @this->item(LastRow,0)->text().isEmpty() ;@

                                        this not refering to the customQtableWidget it's reffering to the
                                        QtableWidgetItem objet

                                        1 Reply Last reply
                                        0
                                        • ? Offline
                                          ? Offline
                                          A Former User
                                          wrote on last edited by
                                          #28

                                          [quote author="SGaist" date="1374875944"]@removeRow(1); << What would happen if you don't have a row number 1 ?@[/quote]

                                          nothing is happened , means no row have to removed , but i have correct this issue

                                          @this->removeRow(this->rowCount()-1); @
                                          and this should works , and finally it works

                                          thank's for the hint

                                          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