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. QTableView & CheckBox delegate alignmnent
Forum Update on Monday, May 27th 2025

QTableView & CheckBox delegate alignmnent

Scheduled Pinned Locked Moved General and Desktop
43 Posts 4 Posters 37.1k 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.
  • G Offline
    G Offline
    giesbert
    wrote on 31 Mar 2011, 09:14 last edited by
    #29

    [quote author="hsfougaris" date="1301553694"]Also if QSFPM means QSortFilterProxyModel, I agree it's not bad as a solution (especially after what I managed to build with a little help); I just wish I could do a few more things with it...[/quote]

    Yes, QSFPM is a (here) common abbreveation for QSortFilterProxyModel :-)

    Perhaps we should add a wiki page with common abbreveation sused here :-)

    Nokia Certified Qt Specialist.
    Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

    1 Reply Last reply
    0
    • A Offline
      A Offline
      andre
      wrote on 31 Mar 2011, 09:32 last edited by
      #30

      <dreaming>
      We should have a feature where such abbreviations are automatically underlined with a dotted line (perhaps only for the first use in a post), which show an explanation on the meaning of that abbreviation (perhaps automagically retreived from that wiki page you talk about).
      </dreaming>

      1 Reply Last reply
      0
      • H Offline
        H Offline
        hsfougaris
        wrote on 31 Mar 2011, 09:39 last edited by
        #31

        I tried to post the source as a wiki ( I created 2 separate pages - one for the delegate and one for the sortproxy thing), but I'm sure I messed it up.
        Am I supposed to add them to a category, or does an admin do that?

        I tried adding the [[Category... thing but it appeared as plain text.

        If you can't say what you mean, you'll never be able to mean what you say.

        1 Reply Last reply
        0
        • A Offline
          A Offline
          andre
          wrote on 31 Mar 2011, 09:42 last edited by
          #32

          The category thing should work, but you do need to remove spaces between the brackets. Problem is: that is hard to show in the wiki itself, because the text will then be interpreted as formatting...

          If you want: post a link, and I'll have a look.

          1 Reply Last reply
          0
          • H Offline
            H Offline
            hsfougaris
            wrote on 31 Mar 2011, 09:45 last edited by
            #33

            http://developer.qt.nokia.com/wiki/QSortFilterProxyModel_subclass_for_readonly_columns_columns_with_checkboxes_and_password_columns

            http://developer.qt.nokia.com/wiki/QSqlRelationalDelegate_subclass_that_works_with_QSqlRelationalTableModel

            If you can't say what you mean, you'll never be able to mean what you say.

            1 Reply Last reply
            0
            • G Offline
              G Offline
              giesbert
              wrote on 31 Mar 2011, 09:49 last edited by
              #34

              author="Andre" date="1301563925"]<dreaming>
              We should have a feature where such abbreviations are automatically underlined with a dotted line (perhaps only for the first use in a post), which show an explanation on the meaning of that abbreviation (perhaps automagically retreived from that wiki page you talk about).
              </dreaming>
              [/quote]

              Make a feature request from this in Jira :-) The idea is cool.

              [quote author="hsfougaris" date="1301564361"]I tried to post the source as a wiki ( I created 2 separate pages - one for the delegate and one for the sortproxy thing), but I'm sure I messed it up.
              Am I supposed to add them to a category, or does an admin do that?

              I tried adding the [[Category... thing but it appeared as plain text.[/quote]

              I added the category for you. Just have a look with edit :-)

              Nokia Certified Qt Specialist.
              Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

              1 Reply Last reply
              0
              • H Offline
                H Offline
                hsfougaris
                wrote on 31 Mar 2011, 09:54 last edited by
                #35

                Thanks... Do you have any references for suppliers of tableView alternatives?

                If you can't say what you mean, you'll never be able to mean what you say.

                1 Reply Last reply
                0
                • G Offline
                  G Offline
                  giesbert
                  wrote on 31 Mar 2011, 09:59 last edited by
                  #36

                  Hi,

                  not more than you already found: devmachines and ICS. I'm sure, there are more, but I don't know who. You can search "Qt apps":http://www.qt-apps.org/

                  One side note to your wiki:

                  I found one error:

                  the data/setdata and flags methods should be public, as they are public in the base class. Making the protected in your derived class leads to strange behavior:

                  People using the base class pointers are able to call them, people using the pointers of type of your class may not. Please make them public.

                  Nokia Certified Qt Specialist.
                  Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

                  1 Reply Last reply
                  0
                  • A Offline
                    A Offline
                    andre
                    wrote on 31 Mar 2011, 10:03 last edited by
                    #37

                    [quote author="hsfougaris" date="1301564749"]http://developer.qt.nokia.com/wiki/QSortFilterProxyModel_subclass_for_readonly_columns_columns_with_checkboxes_and_password_columns

                    http://developer.qt.nokia.com/wiki/QSqlRelationalDelegate_subclass_that_works_with_QSqlRelationalTableModel

                    [/quote]

                    Pages, including categories, look fine to me.

                    1 Reply Last reply
                    0
                    • H Offline
                      H Offline
                      hsfougaris
                      wrote on 31 Mar 2011, 10:04 last edited by
                      #38

                      Did you already do it in the wiki? Because I just looked at the wiki, and it's been removed.

                      If you can't say what you mean, you'll never be able to mean what you say.

                      1 Reply Last reply
                      0
                      • H Offline
                        H Offline
                        hsfougaris
                        wrote on 31 Mar 2011, 10:04 last edited by
                        #39

                        [quote author="Andre" date="1301565818"]
                        [quote author="hsfougaris" date="1301564749"]http://developer.qt.nokia.com/wiki/QSortFilterProxyModel_subclass_for_readonly_columns_columns_with_checkboxes_and_password_columns

                        http://developer.qt.nokia.com/wiki/QSqlRelationalDelegate_subclass_that_works_with_QSqlRelationalTableModel

                        [/quote]

                        Pages, including categories, look fine to me.

                        [/quote]

                        Yes, Gerolf was nice enough to fix them for me.

                        If you can't say what you mean, you'll never be able to mean what you say.

                        1 Reply Last reply
                        0
                        • A Offline
                          A Offline
                          andre
                          wrote on 31 Mar 2011, 10:12 last edited by
                          #40

                          [quote author="hsfougaris" date="1301565899"]

                          Yes, Gerolf was nice enough to fix them for me.[/quote]

                          Damn, that guy is fast ;-)

                          1 Reply Last reply
                          0
                          • G Offline
                            G Offline
                            giesbert
                            wrote on 31 Mar 2011, 10:17 last edited by
                            #41

                            No, you are to slow, and I'm at home :-))

                            Nokia Certified Qt Specialist.
                            Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

                            1 Reply Last reply
                            0
                            • A Offline
                              A Offline
                              andre
                              wrote on 29 Apr 2011, 09:56 last edited by
                              #42

                              [quote author="harry" date="1301564361"]I tried to post the source as a wiki ( I created 2 separate pages - one for the delegate and one for the sortproxy thing), but I'm sure I messed it up.
                              Am I supposed to add them to a category, or does an admin do that?

                              I tried adding the [[Category... thing but it appeared as plain text.[/quote]

                              I have modified your wiki page to add a link to "another solution":https://developer.qt.nokia.com/wiki/QSortFilterProxyModel_subclass_to_add_a_checkbox for adding checkboxes to an abstract item model. The use cases for both approaches are different, and I think they nicely supplement each other. I hope you don't mind.

                              Edit:
                              I have opened "this topic":https://developer.qt.nokia.com/forums/viewthread/5544/ to discuss the API of the class you posted in the snippet, as I think there is room for improvement.

                              1 Reply Last reply
                              0
                              • C Offline
                                C Offline
                                confused
                                wrote on 13 Aug 2012, 19:59 last edited by
                                #43

                                [quote author="harry" date="1301486015"]Ok I found something that seems to work.
                                (based on this http://www.qtcentre.org/archive/index.php/t-18675.html)

                                I'm putting the code here, in case it helps someone else:

                                The basic idea is that there is something like a QList that holds the indexes of the columns that you want to have checkboxes (I'm already thinking of adding another QList for readonly columns).
                                Actual usage would be
                                @
                                CheckableSortFilterProxyModel *cfpm = new CheckableSortFilterProxyModel(this);
                                QList<int> boolCols;
                                boolCols.append( usrModel->fieldIndex("isActive") );
                                boolCols.append( usrModel->fieldIndex("isOk") );
                                cfpm->setParameters(boolCols);
                                cfpm->setSourceModel( mySqlTableModel );
                                myTableView->setModel(cfpm);
                                @

                                Here is the code:

                                checkablesortfilterproxymodel.h:
                                @
                                #ifndef CHECKABLESORTFILTERPROXYMODEL_H
                                #define CHECKABLESORTFILTERPROXYMODEL_H

                                #include <QSortFilterProxyModel>

                                class CheckableSortFilterProxyModel : public QSortFilterProxyModel
                                {
                                Q_OBJECT
                                public:
                                explicit CheckableSortFilterProxyModel(QObject *parent = 0);

                                void setParameters(QList<int> boolCols);
                                

                                protected:
                                QVariant data(const QModelIndex &index, int role) const;
                                bool setData(const QModelIndex &index, const QVariant &value, int role);
                                Qt::ItemFlags flags ( const QModelIndex & index ) const;

                                signals:

                                public slots:

                                private:
                                QList<int> booleanSet;

                                };

                                #endif // CHECKABLESORTFILTERPROXYMODEL_H
                                @

                                checkablesortfilterproxymodel.cpp:
                                @
                                #include "checkablesortfilterproxymodel.h"

                                CheckableSortFilterProxyModel::CheckableSortFilterProxyModel(QObject *parent) :
                                QSortFilterProxyModel(parent)
                                {
                                }

                                void CheckableSortFilterProxyModel::setParameters(QList<int> boolCols) {
                                booleanSet.clear();
                                if (!boolCols.isEmpty()) {
                                foreach(int column , boolCols)
                                {
                                booleanSet.append(column);
                                }
                                }
                                }

                                QVariant CheckableSortFilterProxyModel::data(const QModelIndex &index, int role) const {
                                if(!index.isValid())
                                return QVariant();

                                if(booleanSet.contains(index.column()) && (role == Qt::CheckStateRole || role == Qt::DisplayRole)) {
                                    if (role == Qt::CheckStateRole)
                                        return index.data(Qt::EditRole).toBool() ? QVariant(Qt::Checked) : QVariant(Qt::Unchecked);
                                    else if (role == Qt::DisplayRole)
                                        return QVariant();
                                }
                                else
                                    return QSortFilterProxyModel::data(index,role);
                                

                                }

                                bool CheckableSortFilterProxyModel::setData(const QModelIndex &index, const QVariant &value, int role) {
                                if(!index.isValid())
                                return false;

                                if(booleanSet.contains(index.column()) && role==Qt::CheckStateRole)
                                {
                                    QVariant data = (value.toInt()==Qt::Checked) ? QVariant(1) : QVariant (0);
                                    return QSortFilterProxyModel::setData(index, data, Qt::EditRole);
                                }
                                else
                                    return QSortFilterProxyModel::setData(index,value,role);
                                

                                }

                                Qt::ItemFlags CheckableSortFilterProxyModel::flags ( const QModelIndex & index ) const {
                                if(!index.isValid())
                                return Qt::ItemIsEnabled;

                                if(booleanSet.contains(index.column()))
                                    return Qt::ItemIsUserCheckable | Qt::ItemIsSelectable | Qt::ItemIsEnabled;
                                else
                                    return QSortFilterProxyModel::flags(index);
                                

                                }
                                @
                                [/quote]

                                I know its been over a year since this was las posted but I just wanted to say thank you to Harry for solving this because I have been struggeling with making a check box in a column for a while!

                                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