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 Offline
    VRoninV Offline
    VRonin
    wrote on last edited by VRonin
    #3

    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... 😒

    "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
    ~Napoleon Bonaparte

    On a crusade to banish setIndexWidget() from the holy land of Qt

    Q 1 Reply Last reply
    3
    • 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