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

Layout issue

Scheduled Pinned Locked Moved Solved General and Desktop
31 Posts 4 Posters 3.9k 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.
  • SPlattenS SPlatten

    @Pl45m4 , still an issue, the initial layout:
    image001.png
    After dragging out the top:
    image002.png
    What I want to happen is for the bottom layout to stay joined to just under the horizontal layout where the buttons are, so it expands. So far everything I've tried has failed. The top layout that contains the button and the combo is QHBoxLayout, the layout that contains everything else under the horizontal layout is a QGridLayout.

    Dragging out horizontally is not a problem and everything works beautifully, its just vertical where the QGridLayout does not resize.

    SPlattenS Offline
    SPlattenS Offline
    SPlatten
    wrote on last edited by
    #5

    @SPlatten , bump, can anyone help?

    Kind Regards,
    Sy

    SPlattenS 1 Reply Last reply
    0
    • SPlattenS SPlatten

      @SPlatten , bump, can anyone help?

      SPlattenS Offline
      SPlattenS Offline
      SPlatten
      wrote on last edited by SPlatten
      #6

      @SPlatten , Is this achievable?

      Kind Regards,
      Sy

      JonBJ 1 Reply Last reply
      0
      • SPlattenS SPlatten

        @SPlatten , Is this achievable?

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

        @SPlatten
        Presumably you actually mean that the whole widget has a QVBoxLayout, containing a QHBoxLayout for the button row and a QGridLayout for the bottom stuff. If, as I understand it, you want to resize the outer widget vertically and have the QGridLayout area remain near the top, don't you just want a stretch after the grid layout?

        SPlattenS 1 Reply Last reply
        0
        • JonBJ JonB

          @SPlatten
          Presumably you actually mean that the whole widget has a QVBoxLayout, containing a QHBoxLayout for the button row and a QGridLayout for the bottom stuff. If, as I understand it, you want to resize the outer widget vertically and have the QGridLayout area remain near the top, don't you just want a stretch after the grid layout?

          SPlattenS Offline
          SPlattenS Offline
          SPlatten
          wrote on last edited by SPlatten
          #8

          @JonB , looking at the ui file the structure is:

          MainWindow            QMainWindow
            phzloTop            QHBoxLayout
              cboTraineeToView  QComboBox
              lblTtoV           QLabel
              pbtnAdmin         QPushButton
              pbtnBeginSession  QPushButton
              pbtnEndSession    QPushButton
              pbtnSearch        QPushButton
            pgrdloContent       QGridLayout
          

          The widgets that appear in the QGridLayout are define in a database and added to the layout at runtime. There are various instances of QVBoxLayout and QFormLayout used to layout the data on the left of the grid.

          Kind Regards,
          Sy

          JonBJ 1 Reply Last reply
          0
          • SPlattenS SPlatten

            @JonB , looking at the ui file the structure is:

            MainWindow            QMainWindow
              phzloTop            QHBoxLayout
                cboTraineeToView  QComboBox
                lblTtoV           QLabel
                pbtnAdmin         QPushButton
                pbtnBeginSession  QPushButton
                pbtnEndSession    QPushButton
                pbtnSearch        QPushButton
              pgrdloContent       QGridLayout
            

            The widgets that appear in the QGridLayout are define in a database and added to the layout at runtime. There are various instances of QVBoxLayout and QFormLayout used to layout the data on the left of the grid.

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

            @SPlatten
            I don't really understand how the main window has a QHBoxLayout followed by a QGridLayout without being enclosed in a QVBoxLayout, and how you achieved it in the designer. What makes the QGridLayout come below the QHBoxLayout rather than, say, to the right of it?

            In any case, if I understand what you want correctly, I would have done:

            QVBoxLayout
                QHBoxLayout
                QGridLayout
                addStretch()
            

            But maybe I'm wrong or don't understand.

            SPlattenS 2 Replies Last reply
            1
            • JonBJ JonB

              @SPlatten
              I don't really understand how the main window has a QHBoxLayout followed by a QGridLayout without being enclosed in a QVBoxLayout, and how you achieved it in the designer. What makes the QGridLayout come below the QHBoxLayout rather than, say, to the right of it?

              In any case, if I understand what you want correctly, I would have done:

              QVBoxLayout
                  QHBoxLayout
                  QGridLayout
                  addStretch()
              

              But maybe I'm wrong or don't understand.

              SPlattenS Offline
              SPlattenS Offline
              SPlatten
              wrote on last edited by
              #10

              @JonB, thank you, I'll give it a try.

              Kind Regards,
              Sy

              1 Reply Last reply
              0
              • JonBJ JonB

                @SPlatten
                I don't really understand how the main window has a QHBoxLayout followed by a QGridLayout without being enclosed in a QVBoxLayout, and how you achieved it in the designer. What makes the QGridLayout come below the QHBoxLayout rather than, say, to the right of it?

                In any case, if I understand what you want correctly, I would have done:

                QVBoxLayout
                    QHBoxLayout
                    QGridLayout
                    addStretch()
                

                But maybe I'm wrong or don't understand.

                SPlattenS Offline
                SPlattenS Offline
                SPlatten
                wrote on last edited by SPlatten
                #11

                @JonB , I've added a QVBoxLayout at top level in the centralWidget, I've then dragged and dropped the QHBoxLayout and QGridLayout into this, I've edited the properties for the QVBoxLayout setting layoutStretch to 1,1.

                Unfortunately its still the same as it was before adding the QVBoxLayout where horizontally everything is great, but vertically the button bar moves with the top of the window but the QGridLayout does not.

                Also in code for the QGridLayout after I have populated it:

                mpui->pgrdloContent->setRowStretch(0, 1);
                mpui->pgrdloContent->setRowStretch(1, 1);
                

                Kind Regards,
                Sy

                JonBJ 1 Reply Last reply
                0
                • SPlattenS SPlatten

                  @JonB , I've added a QVBoxLayout at top level in the centralWidget, I've then dragged and dropped the QHBoxLayout and QGridLayout into this, I've edited the properties for the QVBoxLayout setting layoutStretch to 1,1.

                  Unfortunately its still the same as it was before adding the QVBoxLayout where horizontally everything is great, but vertically the button bar moves with the top of the window but the QGridLayout does not.

                  Also in code for the QGridLayout after I have populated it:

                  mpui->pgrdloContent->setRowStretch(0, 1);
                  mpui->pgrdloContent->setRowStretch(1, 1);
                  
                  JonBJ Offline
                  JonBJ Offline
                  JonB
                  wrote on last edited by JonB
                  #12

                  @SPlatten said in Layout issue:

                  I've edited the properties for the QVBoxLayout setting layoutStretch to 1,1.

                  But that makes them have the same stretch as each other, exactly as they do and you don't want. I said to add a stretch after the QGridLayout as per what I wrote, that's the whole point?

                  SPlattenS 1 Reply Last reply
                  0
                  • JonBJ JonB

                    @SPlatten said in Layout issue:

                    I've edited the properties for the QVBoxLayout setting layoutStretch to 1,1.

                    But that makes them have the same stretch as each other, exactly as they do and you don't want. I said to add a stretch after the QGridLayout as per what I wrote, that's the whole point?

                    SPlattenS Offline
                    SPlattenS Offline
                    SPlatten
                    wrote on last edited by
                    #13

                    @JonB , Either we have crossed over or I'm not understanding what you are saying I've added a stretch to the QGridLayout, isn't that exactly what this does?:

                    mpui->pgrdloContent->setRowStretch(0, 1);
                    mpui->pgrdloContent->setRowStretch(1, 1);
                    

                    Kind Regards,
                    Sy

                    JonBJ 1 Reply Last reply
                    0
                    • SPlattenS SPlatten

                      @JonB , Either we have crossed over or I'm not understanding what you are saying I've added a stretch to the QGridLayout, isn't that exactly what this does?:

                      mpui->pgrdloContent->setRowStretch(0, 1);
                      mpui->pgrdloContent->setRowStretch(1, 1);
                      
                      JonBJ Offline
                      JonBJ Offline
                      JonB
                      wrote on last edited by JonB
                      #14

                      @SPlatten
                      No. Exactly as I wrote. 3 things: a horizontal layout, then a grid layout, then a stretch.

                      Why don't you practice with just a vertical layout containing two horizontal layouts and a stretch? That's what you want, right? I can't see how the grid layout being a grid is relevant.

                      SPlattenS 1 Reply Last reply
                      1
                      • JonBJ JonB

                        @SPlatten
                        No. Exactly as I wrote. 3 things: a horizontal layout, then a grid layout, then a stretch.

                        Why don't you practice with just a vertical layout containing two horizontal layouts and a stretch? That's what you want, right? I can't see how the grid layout being a grid is relevant.

                        SPlattenS Offline
                        SPlattenS Offline
                        SPlatten
                        wrote on last edited by
                        #15

                        @JonB , I have:

                        MainWindow              QMainWindow
                          pvtloMain             QVBoxLayout
                            phzloTop            QHBoxLayout
                              cboTraineeToView  QComboBox
                              lblTtoV           QLabel
                              pbtnAdmin         QPushButton
                              pbtnBeginSession  QPushButton
                              pbtnEndSession    QPushButton
                              pbtnSearch        QPushButton
                            pgrdloContent       QGridLayout
                        

                        Kind Regards,
                        Sy

                        JonBJ 1 Reply Last reply
                        0
                        • SPlattenS SPlatten

                          @JonB , I have:

                          MainWindow              QMainWindow
                            pvtloMain             QVBoxLayout
                              phzloTop            QHBoxLayout
                                cboTraineeToView  QComboBox
                                lblTtoV           QLabel
                                pbtnAdmin         QPushButton
                                pbtnBeginSession  QPushButton
                                pbtnEndSession    QPushButton
                                pbtnSearch        QPushButton
                              pgrdloContent       QGridLayout
                          
                          JonBJ Offline
                          JonBJ Offline
                          JonB
                          wrote on last edited by
                          #16

                          @SPlatten
                          I have already answered this 3 times. I said you need a stretch after the grid layout, assuming I understand what you want. I can't say it any more.

                          SPlattenS 1 Reply Last reply
                          0
                          • JonBJ JonB

                            @SPlatten
                            I have already answered this 3 times. I said you need a stretch after the grid layout, assuming I understand what you want. I can't say it any more.

                            SPlattenS Offline
                            SPlattenS Offline
                            SPlatten
                            wrote on last edited by
                            #17

                            @JonB, what is a stretch? I don't see it in the side bar, under which group should I find that?

                            Kind Regards,
                            Sy

                            JonBJ 1 Reply Last reply
                            0
                            • SPlattenS SPlatten

                              @JonB, what is a stretch? I don't see it in the side bar, under which group should I find that?

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

                              @SPlatten
                              I don't run Designer but it's there on the toolbar. Horizontal & vertical stretchers. They look like blue stretches when you place them. They should end up generating

                              vertLayout.addStretch()
                              

                              I think/assume. void QBoxLayout::addStretch(int stretch = 0).

                              Pl45m4P SPlattenS 2 Replies Last reply
                              0
                              • JonBJ JonB

                                @SPlatten
                                I don't run Designer but it's there on the toolbar. Horizontal & vertical stretchers. They look like blue stretches when you place them. They should end up generating

                                vertLayout.addStretch()
                                

                                I think/assume. void QBoxLayout::addStretch(int stretch = 0).

                                Pl45m4P Offline
                                Pl45m4P Offline
                                Pl45m4
                                wrote on last edited by
                                #19

                                @JonB

                                Spacers not stretch :)
                                Stretch is the stretch factor to stretch a layout item over multiple layout "slots"


                                If debugging is the process of removing software bugs, then programming must be the process of putting them in.

                                ~E. W. Dijkstra

                                JonBJ 1 Reply Last reply
                                0
                                • Pl45m4P Pl45m4

                                  @JonB

                                  Spacers not stretch :)
                                  Stretch is the stretch factor to stretch a layout item over multiple layout "slots"

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

                                  @Pl45m4
                                  I have written what I thought it was. I thought spacers were fixed size. Anyway whichever you say! It's some blue thing in Designer :) The link I gave for addStretch() states:

                                  Adds a stretchable space (a QSpacerItem) with zero minimum size and stretch factor stretch to the end of this box layout.

                                  Isn't that it?

                                  1 Reply Last reply
                                  1
                                  • JonBJ JonB

                                    @SPlatten
                                    I don't run Designer but it's there on the toolbar. Horizontal & vertical stretchers. They look like blue stretches when you place them. They should end up generating

                                    vertLayout.addStretch()
                                    

                                    I think/assume. void QBoxLayout::addStretch(int stretch = 0).

                                    SPlattenS Offline
                                    SPlattenS Offline
                                    SPlatten
                                    wrote on last edited by SPlatten
                                    #21

                                    @JonB I'm running version 5.9.2 of Qt Designer, there is no stretchers...Spacers there is thank you @Pl45m4 , but I don't want to spacer things out stretch is the correct terminology just don't see it.

                                    I have now modified the source adding a call to:

                                    mpui->pvtloMain->addStretch(1);
                                    

                                    Ok, now with this its different, the whilespace between the QHBoxLayout layout and QGridLayout is now gone and when resizing the grid layout moves with the window, unlike before when it stayed anchored to the bottom, however its still not right because its not "stretching" the content, instead is moves up the window with space under the layout not occupied.

                                    Just to be absolutely clear I don't want space, I want the content of the QGridLayout to resize as the container is dragged. In the same way it already does when dragging out horizontally.

                                    Kind Regards,
                                    Sy

                                    JonBJ 1 Reply Last reply
                                    0
                                    • SPlattenS SPlatten

                                      @JonB I'm running version 5.9.2 of Qt Designer, there is no stretchers...Spacers there is thank you @Pl45m4 , but I don't want to spacer things out stretch is the correct terminology just don't see it.

                                      I have now modified the source adding a call to:

                                      mpui->pvtloMain->addStretch(1);
                                      

                                      Ok, now with this its different, the whilespace between the QHBoxLayout layout and QGridLayout is now gone and when resizing the grid layout moves with the window, unlike before when it stayed anchored to the bottom, however its still not right because its not "stretching" the content, instead is moves up the window with space under the layout not occupied.

                                      Just to be absolutely clear I don't want space, I want the content of the QGridLayout to resize as the container is dragged. In the same way it already does when dragging out horizontally.

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

                                      @SPlatten said in Layout issue:

                                      Just to be absolutely clear I don't want space, I want the content of the QGridLayout to resize as the container is dragged.

                                      I had no idea that was what you wanted. That's why I asked each time.

                                      So I think you need to set the grid layout (as a whole, not an individual row) to occupy as much height as possible. Now is that what you want?

                                      SPlattenS 1 Reply Last reply
                                      0
                                      • JonBJ JonB

                                        @SPlatten said in Layout issue:

                                        Just to be absolutely clear I don't want space, I want the content of the QGridLayout to resize as the container is dragged.

                                        I had no idea that was what you wanted. That's why I asked each time.

                                        So I think you need to set the grid layout (as a whole, not an individual row) to occupy as much height as possible. Now is that what you want?

                                        SPlattenS Offline
                                        SPlattenS Offline
                                        SPlatten
                                        wrote on last edited by
                                        #23

                                        @JonB , ok, please elaborate, its sounds like thats what I need, how do I do that?

                                        Kind Regards,
                                        Sy

                                        JonBJ J.HilkJ 2 Replies Last reply
                                        0
                                        • SPlattenS SPlatten

                                          @JonB , ok, please elaborate, its sounds like thats what I need, how do I do that?

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

                                          @SPlatten
                                          Dunno, I just play till I get what I want :) At least we finally seem to be agreeing about what that is!

                                          Don't you have to set the grid in the vertical layout to expand its height as much as possible?

                                          Is QBoxLayout::addLayout(QLayout *layout, int stretch = 0) what is wanted? With a non-0 stretch.

                                          Otherwise maybe @Pl45m4 can state what is wanted here?

                                          SPlattenS 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