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

Extend QSqlTableModel & Update model data;

Scheduled Pinned Locked Moved Solved General and Desktop
qsqltablemodelqproxymodel
14 Posts 2 Posters 8.4k 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.
  • SGaistS Offline
    SGaistS Offline
    SGaist
    Lifetime Qt Champion
    wrote on last edited by
    #4

    Also columnCount, otherwise your column won't be shown.

    AFAIK, you currently have to do that by hand e.g. using a QHash.

    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
      #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