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. QTableWidget and SQL (dynamic) not working
Forum Updated to NodeBB v4.3 + New Features

QTableWidget and SQL (dynamic) not working

Scheduled Pinned Locked Moved Solved General and Desktop
qtablewidgetsqlsqlitequery
12 Posts 3 Posters 5.3k Views 2 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.
  • S Offline
    S Offline
    SGaist
    Lifetime Qt Champion
    wrote on 8 Apr 2016, 22:32 last edited by
    #2

    Hi,

    You don't add any row to your QTableWidget or did you do before running that loop ?

    Also, why not use a QTableView with QSqlQueryModel ?

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

    C 2 Replies Last reply 9 Apr 2016, 11:04
    0
    • S SGaist
      8 Apr 2016, 22:32

      Hi,

      You don't add any row to your QTableWidget or did you do before running that loop ?

      Also, why not use a QTableView with QSqlQueryModel ?

      C Offline
      C Offline
      cxam
      wrote on 9 Apr 2016, 11:04 last edited by
      #3

      @SGaist "i" is the number of rows that add's +1 at the end of the loop

      Stay Hungry, Stay Foolish

      1 Reply Last reply
      0
      • S SGaist
        8 Apr 2016, 22:32

        Hi,

        You don't add any row to your QTableWidget or did you do before running that loop ?

        Also, why not use a QTableView with QSqlQueryModel ?

        C Offline
        C Offline
        cxam
        wrote on 9 Apr 2016, 11:04 last edited by
        #4

        @SGaist But how QtableView works ?

        Stay Hungry, Stay Foolish

        J 1 Reply Last reply 9 Apr 2016, 14:20
        0
        • C cxam
          9 Apr 2016, 11:04

          @SGaist But how QtableView works ?

          J Offline
          J Offline
          Joel Bodenmann
          wrote on 9 Apr 2016, 14:20 last edited by
          #5

          I can recommend reading these two articles to not only understand the model/view concept but also how Qt implements it:

          • https://doc.qt.io/qt-5/model-view-programming.html
          • https://doc.qt.io/qt-5/modelview.html

          As @SGaist pointed out there's an existing model that allows you to display SQL query results in a QTableView. The model is called QSqlQueryModel. You'd basically use a QTableView instead of a QTableWidget and use QTableView::setModel() to set the QSqlQueryModel as the model for the table view.

          Industrial process automation software: https://simulton.com
          Embedded Graphics & GUI library: https://ugfx.io

          C 1 Reply Last reply 9 Apr 2016, 21:16
          0
          • J Joel Bodenmann
            9 Apr 2016, 14:20

            I can recommend reading these two articles to not only understand the model/view concept but also how Qt implements it:

            • https://doc.qt.io/qt-5/model-view-programming.html
            • https://doc.qt.io/qt-5/modelview.html

            As @SGaist pointed out there's an existing model that allows you to display SQL query results in a QTableView. The model is called QSqlQueryModel. You'd basically use a QTableView instead of a QTableWidget and use QTableView::setModel() to set the QSqlQueryModel as the model for the table view.

            C Offline
            C Offline
            cxam
            wrote on 9 Apr 2016, 21:16 last edited by
            #6

            @Joel-Bodenmann I tried to use QTableView but actually it would break a lot of my code so unless it's completely necessary I won't use it. I'm focusing on trying to solve my current issue.

            Stay Hungry, Stay Foolish

            J 1 Reply Last reply 9 Apr 2016, 22:14
            0
            • S Offline
              S Offline
              SGaist
              Lifetime Qt Champion
              wrote on 9 Apr 2016, 21:25 last edited by
              #7

              What would break ?

              In any case, I don't see you creating new rows. The incrementation of i doesn't mean your QTableWidget will have an additional row unless you did it before your while loop.

              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
              • C cxam
                9 Apr 2016, 21:16

                @Joel-Bodenmann I tried to use QTableView but actually it would break a lot of my code so unless it's completely necessary I won't use it. I'm focusing on trying to solve my current issue.

                J Offline
                J Offline
                Joel Bodenmann
                wrote on 9 Apr 2016, 22:14 last edited by Joel Bodenmann 4 Sept 2016, 22:16
                #8

                @cxam QTableWidget actually inherits from QTableView so it shouldn't break anything in terms of the GUI. In terms of the data handling: You just outsource that to the model. As there's an existing model that is designed specifically for handling SQL queries I can imagine that the only thing it would do is drastically simplify your life.
                The QTableWidget really is just a QTableView with an internal model. That model is a generic model. Using the QTableView would allow you to use the SQL query specific QSqlQueryModel.

                @SGaist QTableWidget::setItem() actually creates the row internally.

                Industrial process automation software: https://simulton.com
                Embedded Graphics & GUI library: https://ugfx.io

                C 1 Reply Last reply 9 Apr 2016, 22:29
                1
                • J Joel Bodenmann
                  9 Apr 2016, 22:14

                  @cxam QTableWidget actually inherits from QTableView so it shouldn't break anything in terms of the GUI. In terms of the data handling: You just outsource that to the model. As there's an existing model that is designed specifically for handling SQL queries I can imagine that the only thing it would do is drastically simplify your life.
                  The QTableWidget really is just a QTableView with an internal model. That model is a generic model. Using the QTableView would allow you to use the SQL query specific QSqlQueryModel.

                  @SGaist QTableWidget::setItem() actually creates the row internally.

                  C Offline
                  C Offline
                  cxam
                  wrote on 9 Apr 2016, 22:29 last edited by
                  #9

                  @Joel-Bodenmann Hmm I see. I'll check it out then, thanks for your help.

                  Stay Hungry, Stay Foolish

                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on 9 Apr 2016, 22:37 last edited by
                    #10

                    @Joel-Bodenmann No it doesn't. First thing done, it checks whether the row, column combination returns a valid index if not then it returns immediately.

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

                    J C 2 Replies Last reply 9 Apr 2016, 22:40
                    0
                    • S SGaist
                      9 Apr 2016, 22:37

                      @Joel-Bodenmann No it doesn't. First thing done, it checks whether the row, column combination returns a valid index if not then it returns immediately.

                      J Offline
                      J Offline
                      Joel Bodenmann
                      wrote on 9 Apr 2016, 22:40 last edited by
                      #11

                      @SGaist Yes, you are correct. I am sorry for giving wrong information.

                      @cxam So as @SGaist pointed out in his first post: Make sure that your QTableWidget "has enough rows".
                      But anyway, I'd still recommend going with QTableView and QSqlQueryModel in your case.

                      Industrial process automation software: https://simulton.com
                      Embedded Graphics & GUI library: https://ugfx.io

                      1 Reply Last reply
                      0
                      • S SGaist
                        9 Apr 2016, 22:37

                        @Joel-Bodenmann No it doesn't. First thing done, it checks whether the row, column combination returns a valid index if not then it returns immediately.

                        C Offline
                        C Offline
                        cxam
                        wrote on 10 Apr 2016, 07:06 last edited by
                        #12

                        @SGaist Indeed, you're right When I set the properties for my table I set that the number of rows was "1" so I have to create an "int" variable and then say that the number of rows is that variable starting from 1 and then increment that number on the loop.

                        Stay Hungry, Stay Foolish

                        1 Reply Last reply
                        0

                        11/12

                        9 Apr 2016, 22:40

                        • Login

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