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. Extend QSqlTableModel & Update model data;

Extend QSqlTableModel & Update model data;

Scheduled Pinned Locked Moved Solved General and Desktop
qsqltablemodelqproxymodel
14 Posts 2 Posters 7.8k 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.
  • ginkgoguyG Offline
    ginkgoguyG Offline
    ginkgoguy
    wrote on last edited by
    #5

    Thanks for your help.
    I decide to inherit from QSortFilterProxyModel, extend it to add additional columns and set the sourceModel to QSqlTableModel .

    class ExtraColumnProxyModel : public QSortFilterProxyModel
    {
      Q_OBJECT
    public:
      ExtraColumnProxyModel(QObject* parent = 0);
    
      Qt::ItemFlags flags(const QModelIndex &index) const;
    
      QVariant headerData( int section
                         , Qt::Orientation orientation
                         , int role = Qt::DisplayRole
                         ) const;
    
      QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
    
      int columnCount(const QModelIndex &parent = QModelIndex()) const;
    
      QModelIndex index( int row
                       , int column
                       , const QModelIndex& parent = QModelIndex()
                       ) const;
    
      void appendColumn(QString columnName);
    
      QHash<int, QByteArray> roleNames() const;
    
    private:
      QHash<int, QByteArray> m_roles;
      QVector<QString> headerDataVector = QVector<QString>();
    };
    
    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #6

      So it's working like you wanted it ?

      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
      • ginkgoguyG Offline
        ginkgoguyG Offline
        ginkgoguy
        wrote on last edited by
        #7

        Yes, the model works correctly. Thanks.
        If I want to access the data stored in the extraColumns and I the only thing I get is a identifier-string. I have to create a QHash<QString, QModelIndex> (update it on model change) to get the correct index and a QMap<QModelIndex, $Data> to store and access the values. Or is there a cleaner solution?

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

          Are you moving rows around ?

          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
          • ginkgoguyG Offline
            ginkgoguyG Offline
            ginkgoguy
            wrote on last edited by
            #9

            If not, is there a simpler solution?
            I was thinking of filter and sort functionality.

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

              You could put that information at the same index using a custom role but it might be slower to get to the right index when searching for it.

              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
              • ginkgoguyG Offline
                ginkgoguyG Offline
                ginkgoguy
                wrote on last edited by
                #11

                Sounds like what I'm looking. Can you please describe in more detail what is to be done for or post a link to a describtion?

                Best regards

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

                  You can all setData from your model and change the last parameter to a custom value e.g. Qt::UserRole + 1. Define that value in your class so you can easily re-use it.

                  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
                  • ginkgoguyG Offline
                    ginkgoguyG Offline
                    ginkgoguy
                    wrote on last edited by
                    #13

                    Sorry, I was looking for an example , but found nothing on the internet. Can you explain to me the usage of it by short example ?

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

                      An example of myModel->setData(myCustomValue, Qt::UserRole + 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

                      • Login

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