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. Automatically stretch QTableWidget to fit resized window
Forum Updated to NodeBB v4.3 + New Features

Automatically stretch QTableWidget to fit resized window

Scheduled Pinned Locked Moved Solved General and Desktop
layout
18 Posts 7 Posters 45.5k Views 3 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.
  • kshegunovK Offline
    kshegunovK Offline
    kshegunov
    Moderators
    wrote on last edited by kshegunov
    #9

    @skebanga
    Why not just create a simple VBox layout to insert into your central widget layout and add the frames there? Seems the most simple solution to me.

    Read and abide by the Qt Code of Conduct

    S 1 Reply Last reply
    1
    • S skebanga

      I have a QBoxLayout in QBoxLayout::TopToBottom alignment mode to which I have added 2 QFrame widgets.

      QBoxLayout layout;
      central_widget.setLayout(&layout);
      ...
      layout.addWidget(&form_frame, 0, Qt::AlignTop);
      layout.addWidget(&btn_frame,  0, Qt::AlignBottom);
      

      I would like the form_frame to stretch to fit both vertically and horizontally when the window is resized, but at the moment it only stretches horizontally.

      Here is an example:

      (full working code below)

      The window as it comes up by default:

      default

      The window after resizing:

      resized

      I would like the QTableWidget (or it's parent QFrame) it stretch vertically too, as marked here:

      stretch vertically

      Code producing example:

      #include <QApplication>
      #include <QMainWindow>
      #include <QFormLayout>
      #include <QPushButton>
      #include <QTableWidget>
      
      class App
      {
      public:
          App(int argc, char** argv)
              : app(argc, argv)
              , layout(QBoxLayout::TopToBottom)
          {
              window.setCentralWidget(&central);
          }
      
          int exec()
          {
              central.setLayout(&layout);
              layout.addWidget(&form_frame, 0, Qt::AlignTop);
              layout.addWidget(&btn_frame,  0, Qt::AlignBottom);
      
              form_frame.setLayout(&form_layout);
              btn_frame.setLayout(&btn_layout);
      
              // create a table widget
              QTableWidget* table = new QTableWidget(0, 2);
              form_layout.addRow(table);
              QStringList labels;
              labels << "header 1" << "header 2";
              table->setHorizontalHeaderLabels(labels);
      
              // create some buttons
              btn_save   = new QPushButton("&save");
              btn_cancel = new QPushButton("&cancel");
              btn_layout.addWidget(btn_save);
              btn_layout.addWidget(btn_cancel);
      
              window.show();
              return app.exec();
          }
      
          QApplication app;
          QMainWindow  window;
      
          QWidget      central;
          QBoxLayout   layout;
      
          QFrame       form_frame;
          QFormLayout  form_layout;
      
          QFrame       btn_frame;
          QHBoxLayout  btn_layout;
          QPushButton* btn_save;
          QPushButton* btn_cancel;
      };
      
      int main(int argc, char** argv)
      {
          return App(argc, argv).exec();
      }
      
      
      D Offline
      D Offline
      doshirushabh
      wrote on last edited by
      #10

      @skebanga
      Not sure but please try this. I was facing similar issue , this solved it.
      SearchTable->horizontalHeader()->setStretchLastSection(true);

      S 1 Reply Last reply
      1
      • kshegunovK kshegunov

        @skebanga
        Why not just create a simple VBox layout to insert into your central widget layout and add the frames there? Seems the most simple solution to me.

        S Offline
        S Offline
        skebanga
        wrote on last edited by
        #11

        Thank you @SGaist and @kshegunov

        Between your examples and suggestions I have managed to achieve what I want.

        kshegunovK 1 Reply Last reply
        0
        • D doshirushabh

          @skebanga
          Not sure but please try this. I was facing similar issue , this solved it.
          SearchTable->horizontalHeader()->setStretchLastSection(true);

          S Offline
          S Offline
          skebanga
          wrote on last edited by
          #12

          @doshirushabh

          SearchTable->horizontalHeader()->setStretchLastSection(true);

          I don't believe this is what I'm looking for here, as this is to stretch the last section of the table as the table is resized, whereas I want to stretch the table itself.

          D 1 Reply Last reply
          0
          • S skebanga

            Thank you @SGaist and @kshegunov

            Between your examples and suggestions I have managed to achieve what I want.

            kshegunovK Offline
            kshegunovK Offline
            kshegunov
            Moderators
            wrote on last edited by
            #13

            @skebanga
            Good job! :)

            Read and abide by the Qt Code of Conduct

            1 Reply Last reply
            0
            • S skebanga

              @doshirushabh

              SearchTable->horizontalHeader()->setStretchLastSection(true);

              I don't believe this is what I'm looking for here, as this is to stretch the last section of the table as the table is resized, whereas I want to stretch the table itself.

              D Offline
              D Offline
              doshirushabh
              wrote on last edited by
              #14

              @skebanga
              Hello. If you can please tell how did you achieve that . I have similar issues

              Thanks !!!

              1 Reply Last reply
              0
              • G Offline
                G Offline
                GoodPal
                wrote on last edited by
                #15

                In PyQt5 How can this be done?
                Automatically stretch PyQt5 Widgets to fit resized window?
                please help me

                JonBJ 1 Reply Last reply
                0
                • G GoodPal

                  In PyQt5 How can this be done?
                  Automatically stretch PyQt5 Widgets to fit resized window?
                  please help me

                  JonBJ Offline
                  JonBJ Offline
                  JonB
                  wrote on last edited by
                  #16

                  @GoodPal
                  The fact that you are using PyQt rather than C++ is neither here nor there to the solution. If the code above in the answers works for C++, you just have to translate it to Python/PyQt and it will work there too.

                  1 Reply Last reply
                  1
                  • N Offline
                    N Offline
                    nlcodes
                    wrote on last edited by
                    #17

                    So basically, it's not possible. Got it.

                    SGaistS 1 Reply Last reply
                    0
                    • N nlcodes

                      So basically, it's not possible. Got it.

                      SGaistS Offline
                      SGaistS Offline
                      SGaist
                      Lifetime Qt Champion
                      wrote on last edited by
                      #18

                      Hi,
                      @nlcodes said in Automatically stretch QTableWidget to fit resized window:

                      So basically, it's not possible. Got it.

                      You misunderstood what @JonB wrote. What he wrote is that you have to translate the C++ code you see above in its Python counterpart. That's all.

                      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
                      1

                      • Login

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