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. Want to have checkboxes in headers of QTreeWiddget
Qt 6.11 is out! See what's new in the release blog

Want to have checkboxes in headers of QTreeWiddget

Scheduled Pinned Locked Moved Unsolved General and Desktop
13 Posts 3 Posters 4.1k 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.
  • VRoninV VRonin

    https://wiki.qt.io/Qt_project_org_faq#How_can_I_insert_a_checkbox_into_the_header_of_my_view.3F

    P.S.
    This was basically a LMGTFY... 😒

    Q Offline
    Q Offline
    Qt Enthusiast
    wrote on last edited by
    #4

    @VRonin

    The check box in this not clickable

    mrjjM Q 2 Replies Last reply
    0
    • Q Qt Enthusiast

      @VRonin

      The check box in this not clickable

      mrjjM Offline
      mrjjM Offline
      mrjj
      Lifetime Qt Champion
      wrote on last edited by
      #5

      @Qt-Enthusiast
      Hi
      That part is left as an exercise for the reader.

      "You would also need to reimplement the mousePressEvent() http://doc.qt.io/qt-5/qheaderview.html#mousePressEvent to detect when the checkbox is clicked, in order to paint the checked and unchecked states."

      Q 1 Reply Last reply
      2
      • mrjjM mrjj

        @Qt-Enthusiast
        Hi
        That part is left as an exercise for the reader.

        "You would also need to reimplement the mousePressEvent() http://doc.qt.io/qt-5/qheaderview.html#mousePressEvent to detect when the checkbox is clicked, in order to paint the checked and unchecked states."

        Q Offline
        Q Offline
        Qt Enthusiast
        wrote on last edited by
        #6

        @mrjj
        it is there

        1 Reply Last reply
        0
        • Q Offline
          Q Offline
          Qt Enthusiast
          wrote on last edited by
          #7

          Is it possible to have these headers per column basis, I don not see anything in such documenattion

          1 Reply Last reply
          0
          • mrjjM mrjj

            @Qt-Enthusiast
            hi
            THis should give good hints
            http://blog.qt.io/blog/2014/04/11/qt-weekly-5-widgets-on-a-qheaderview/

            mrjjM Offline
            mrjjM Offline
            mrjj
            Lifetime Qt Champion
            wrote on last edited by mrjj
            #8

            @mrjj
            http://blog.qt.io/blog/2014/04/11/qt-weekly-5-widgets-on-a-qheaderview/
            Actually this sample have issues
            It wont call paintSection every time and hence its not redrawn correctly.

            It seems that
            this->update();
            will not always trigger it to paint whole header. ( call paintSection)

            Anyone have good input on why ?

            
            #include <QtGui>
            #include <QHeaderView>
            #include <QTableWidget>
            #include <QDebug>
            
            class MyHeader : public QHeaderView {
             public:
              MyHeader(Qt::Orientation orientation, QWidget* parent = 0) : QHeaderView(orientation, parent) {
              }
            
             protected:
              void paintSection(QPainter* painter, const QRect& rect, int logicalIndex) const {
                painter->save();
                QHeaderView::paintSection(painter, rect, logicalIndex);
                painter->restore();
                qDebug() << "Paint FIRST";
                if (logicalIndex == 0) {
                  QStyleOptionButton option;
                  option.rect = QRect(10, 10, 10, 10);
                  if (isOn)
                    option.state = QStyle::State_On;
                  else
                    option.state = QStyle::State_Off;
                  this->style()->drawPrimitive(QStyle::PE_IndicatorCheckBox, &option, painter);
                  qDebug() << "Paint logicalIndex";
                }
            
              }
              void mousePressEvent(QMouseEvent* event) {
                QHeaderView::mousePressEvent(event);
            
                if (isOn)
                  isOn = false;
                else
                  isOn = true;
            
                this->update();
            
                qDebug() << "mousePressEvent";
              }
            
             private:
              bool isOn;  
            protected:
            };
            
            
            int main(int argc, char** argv) {
              QApplication app(argc, argv);
              QTableWidget table;
              table.setRowCount(4);
              table.setColumnCount(3);
            
              MyHeader* myHeader = new MyHeader(Qt::Horizontal, &table);
              table.setHorizontalHeader(myHeader);
              table.show();
              return app.exec();
            }
            
            1 Reply Last reply
            0
            • Q Offline
              Q Offline
              Qt Enthusiast
              wrote on last edited by
              #9

              Please suggest the solution

              1 Reply Last reply
              0
              • Q Qt Enthusiast

                @VRonin

                The check box in this not clickable

                Q Offline
                Q Offline
                Qt Enthusiast
                wrote on last edited by
                #10

                @Qt-Enthusiast the

                the check box is not easily clickable if you can suggest the proper solution

                mrjjM 1 Reply Last reply
                0
                • Q Qt Enthusiast

                  @Qt-Enthusiast the

                  the check box is not easily clickable if you can suggest the proper solution

                  mrjjM Offline
                  mrjjM Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on last edited by
                  #11

                  @Qt-Enthusiast
                  Did not find any.
                  The sample listed on wiki do not repaint headers (always) so that did not work well.

                  1 Reply Last reply
                  0
                  • Q Offline
                    Q Offline
                    Qt Enthusiast
                    wrote on last edited by
                    #12

                    Can u suggest some alternative solution

                    mrjjM 1 Reply Last reply
                    0
                    • Q Qt Enthusiast

                      Can u suggest some alternative solution

                      mrjjM Offline
                      mrjjM Offline
                      mrjj
                      Lifetime Qt Champion
                      wrote on last edited by
                      #13

                      @Qt-Enthusiast
                      Hi Sadly no. The sample would work if update() would make the header to be updated but
                      it do not as far as i can tell.

                      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