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. InsertRow
Forum Updated to NodeBB v4.3 + New Features

InsertRow

Scheduled Pinned Locked Moved Unsolved General and Desktop
32 Posts 5 Posters 4.5k 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.
  • D Offline
    D Offline
    Duy Khang
    wrote on last edited by
    #15

    Thank you very much

    1 Reply Last reply
    0
    • JonBJ JonB

      @Duy-Khang
      Please read the documentation rather than asking each time. It is beneficial to you to understand, not just be told. There is even an example at https://doc.qt.io/qt-5/qsqltablemodel.html#details.

      D Offline
      D Offline
      Duy Khang
      wrote on last edited by
      #16

      @JonB
      newrow.png
      do you know how to disable or turn off the these indexs in this picture ?

      JonBJ 1 Reply Last reply
      0
      • Christian EhrlicherC Offline
        Christian EhrlicherC Offline
        Christian Ehrlicher
        Lifetime Qt Champion
        wrote on last edited by
        #17

        @Duy-Khang said in InsertRow:

        do you know how to disable or turn off the these indexs in this picture ?

        Hide the horizontal and vertical header.

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

        D 1 Reply Last reply
        3
        • D Duy Khang

          @JonB
          newrow.png
          do you know how to disable or turn off the these indexs in this picture ?

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

          @Duy-Khang
          If that column is in the table but you don't want to show it, use void QTableView::hideColumn(int column) to suppress it in your view.

          Oh, I misunderstood what you were wanting to hide in your picture! I thought you meant the first column!

          In which case it's the horizontal header as @Christian-Ehrlicher has pointed you to.

          D 2 Replies Last reply
          0
          • Christian EhrlicherC Christian Ehrlicher

            @Duy-Khang said in InsertRow:

            do you know how to disable or turn off the these indexs in this picture ?

            Hide the horizontal and vertical header.

            D Offline
            D Offline
            Duy Khang
            wrote on last edited by
            #19

            @Christian-Ehrlicher thank you.

            1 Reply Last reply
            0
            • JonBJ JonB

              @Duy-Khang
              If that column is in the table but you don't want to show it, use void QTableView::hideColumn(int column) to suppress it in your view.

              Oh, I misunderstood what you were wanting to hide in your picture! I thought you meant the first column!

              In which case it's the horizontal header as @Christian-Ehrlicher has pointed you to.

              D Offline
              D Offline
              Duy Khang
              wrote on last edited by
              #20

              @JonB yes, thank you, it works

              1 Reply Last reply
              0
              • JonBJ JonB

                @Duy-Khang
                If that column is in the table but you don't want to show it, use void QTableView::hideColumn(int column) to suppress it in your view.

                Oh, I misunderstood what you were wanting to hide in your picture! I thought you meant the first column!

                In which case it's the horizontal header as @Christian-Ehrlicher has pointed you to.

                D Offline
                D Offline
                Duy Khang
                wrote on last edited by
                #21

                @JonB hi,
                set.png

                how can i change the name of column in picture ?

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

                  What names do you want there ?

                  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
                  • D Offline
                    D Offline
                    Duy Khang
                    wrote on last edited by Duy Khang
                    #23

                    @SGaist hi, how can I insert a row after the current row, assuming we don't have any rows at first, I use QSqlTableModel.

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

                      The same as usual.

                      As for setting the header data, it's shown in the QSqlTableModel 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
                      1
                      • D Offline
                        D Offline
                        Duy Khang
                        wrote on last edited by
                        #25

                        yes, i have done it and then how can I insert a row after the current row, assuming we don't have any rows at first, I use QSqlTableModel.

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

                          What issue do you have with using insertRow ?

                          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
                          2
                          • D Duy Khang

                            yes, i have done it and then how can I insert a row after the current row, assuming we don't have any rows at first, I use QSqlTableModel.

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

                            @Duy-Khang said in InsertRow:

                            how can I insert a row after the current row, assuming we don't have any rows at first

                            In addition to what @SGaist has been saying, how do you have a "current" row to insert after if you don't have any rows to start with?

                            1 Reply Last reply
                            1
                            • A Offline
                              A Offline
                              ArthurPYQT
                              wrote on last edited by
                              #28
                              import sys
                              
                              from PyQt5.QtWidgets import QWidget, QApplication,QTableView, QVBoxLayout,QPushButton
                              from PyQt5.QtSql import QSqlDatabase, QSqlQuery, QSqlTableModel,QSqlRecord
                              
                              class demo(QWidget):
                                  def __init__(self):
                                      super().__init__()
                                      lyt = QVBoxLayout()
                                      self.setLayout(lyt)
                                      tview = QTableView()
                                      btn = QPushButton('add')
                                      lyt.addWidget(tview)
                                      lyt.addWidget(btn)
                                      db = QSqlDatabase.addDatabase("QSQLITE")
                                      db.setDatabaseName(r"xxx.db")
                                      self.model = testModel(db)
                                      tview.setModel(self.model)
                                      btn.clicked.connect(self.insertNewRecord)
                                  
                                  def insertNewRecord(self):
                                      r = QSqlRecord()
                                      r.setValue('name', 'hello')
                                      r.setValue('age', 23)
                              
                                      if self.model.insertRecord(0, r):
                              
                                          print(self.model.submitAll())
                                          print(self.model.lastError().text())
                                      else:
                                          self.model.db.rollback()
                                          print(self.model.lastError().text())
                                      self.model.select()
                                      
                              class testModel(QSqlTableModel):
                                  def __init__(self, db):
                                      super().__init__()
                                      self.db = db
                                   
                                      print(self.db.open())
                                      self.setTable('test')
                                      self.setEditStrategy(QSqlTableModel.OnManualSubmit)
                                      print(self.select())
                                      print(self.lastError().text())
                                      print(self.tableName())
                              
                              if __name__ == '__main__':
                                  app = QApplication(sys.argv)
                                  t = demo()
                                  t.show()
                                  sys.exit(app.exec())
                              
                              

                              data is displayed properly, but when i try to insertRecord, something wrong "No fields to update ". tableview not updated, let alone the database.

                              how to insert a record into the table?

                              JonBJ 1 Reply Last reply
                              0
                              • A ArthurPYQT
                                import sys
                                
                                from PyQt5.QtWidgets import QWidget, QApplication,QTableView, QVBoxLayout,QPushButton
                                from PyQt5.QtSql import QSqlDatabase, QSqlQuery, QSqlTableModel,QSqlRecord
                                
                                class demo(QWidget):
                                    def __init__(self):
                                        super().__init__()
                                        lyt = QVBoxLayout()
                                        self.setLayout(lyt)
                                        tview = QTableView()
                                        btn = QPushButton('add')
                                        lyt.addWidget(tview)
                                        lyt.addWidget(btn)
                                        db = QSqlDatabase.addDatabase("QSQLITE")
                                        db.setDatabaseName(r"xxx.db")
                                        self.model = testModel(db)
                                        tview.setModel(self.model)
                                        btn.clicked.connect(self.insertNewRecord)
                                    
                                    def insertNewRecord(self):
                                        r = QSqlRecord()
                                        r.setValue('name', 'hello')
                                        r.setValue('age', 23)
                                
                                        if self.model.insertRecord(0, r):
                                
                                            print(self.model.submitAll())
                                            print(self.model.lastError().text())
                                        else:
                                            self.model.db.rollback()
                                            print(self.model.lastError().text())
                                        self.model.select()
                                        
                                class testModel(QSqlTableModel):
                                    def __init__(self, db):
                                        super().__init__()
                                        self.db = db
                                     
                                        print(self.db.open())
                                        self.setTable('test')
                                        self.setEditStrategy(QSqlTableModel.OnManualSubmit)
                                        print(self.select())
                                        print(self.lastError().text())
                                        print(self.tableName())
                                
                                if __name__ == '__main__':
                                    app = QApplication(sys.argv)
                                    t = demo()
                                    t.show()
                                    sys.exit(app.exec())
                                
                                

                                data is displayed properly, but when i try to insertRecord, something wrong "No fields to update ". tableview not updated, let alone the database.

                                how to insert a record into the table?

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

                                @ArthurPYQT
                                Since you call print(self.model.lastError().text()) both when insertRecord(0, r) succeeds and when it fails, do you want to tell us (actually prove) which route your code is following...?

                                A 1 Reply Last reply
                                1
                                • JonBJ JonB

                                  @ArthurPYQT
                                  Since you call print(self.model.lastError().text()) both when insertRecord(0, r) succeeds and when it fails, do you want to tell us (actually prove) which route your code is following...?

                                  A Offline
                                  A Offline
                                  ArthurPYQT
                                  wrote on last edited by
                                  #30

                                  @JonB self.model.insertRecord(0, r) returns True, self.model.submitAll() returns False, self.model.lastError().text() returns "No fields to update"

                                  A 1 Reply Last reply
                                  0
                                  • A ArthurPYQT

                                    @JonB self.model.insertRecord(0, r) returns True, self.model.submitAll() returns False, self.model.lastError().text() returns "No fields to update"

                                    A Offline
                                    A Offline
                                    ArthurPYQT
                                    wrote on last edited by ArthurPYQT
                                    #31

                                    @ArthurPYQT I finally found the solution. it should be r=self.model.record() rather than r=QSqlRecord(). And I 'vd come up with a new question, is QSqlRelationalTableModel a must if I want to display data from two tables and write data back?

                                    JonBJ 1 Reply Last reply
                                    0
                                    • A ArthurPYQT

                                      @ArthurPYQT I finally found the solution. it should be r=self.model.record() rather than r=QSqlRecord(). And I 'vd come up with a new question, is QSqlRelationalTableModel a must if I want to display data from two tables and write data back?

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

                                      @ArthurPYQT
                                      QSqlRelationalTableModel is only for: if you have a foreign key relationship in your database between the two tables, it allows you to display to the user the "mapped" values for viewing/editing. Typical example:

                                      • Table A has its own PK plus other columns. One column is a country_id number.
                                      • That number is from Table B, which has country_id as its PK plus a country_name column.

                                      If you do this via QSqlRelationalTableModel and use a QSqlRelationalDelegate, it will show the "mapped" country name from Table B for the column in Table A which is the country id. And if you allow editing it will present the user with a combobox of all the country names in Table B to pick from when editing the column in Table A.

                                      However, it is not mandatory to use QSRTM. You can do viewing/updating with or without. Note that what I have described is all it does: people sometimes expect more of it. In particular, it does not have any support for editing the foreign key table (Table B).

                                      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