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 not fitting the entire dockwidget window
Qt 6.11 is out! See what's new in the release blog

QTableview not fitting the entire dockwidget window

Scheduled Pinned Locked Moved Solved General and Desktop
28 Posts 3 Posters 9.8k 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.
  • SGaistS SGaist

    Don't set the layout on DockWidget.

    By the way, there's something fishy in your code. Did you create your widget with designer and now trying to use it with a QMainWindow ?

    Because it looks like you are trying to create the dock widget from within your custom widget and not from a QMainWindow derived class.

    saitejS Offline
    saitejS Offline
    saitej
    wrote on last edited by
    #9

    @SGaist

    First I have created the dock in the mainwindow and I am creating the table on the dock through a table class. This layout function is in the class.
    Suggest me the right way of getting this done.
    MainWindow Code:

    // Dock Creation
      this->setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea);
        this->setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea);
        this->setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
        this->setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
    // table creation
    QDockWidget *dock = new QDockWidget("Way Point Table",this);
        wayPointTable *wptable = new wayPointTable();
        dock->setWidget(wptable);
        dock->setFixedSize(500, 300);
    
        this->addDockWidget(Qt::BottomDockWidgetArea, dock);
    

    WayPointTable class has this code:

    ui->tableView->verticalHeader()->setDefaultAlignment(Qt::AlignVCenter | Qt::AlignRight);
        ui->tableView->horizontalHeader()->setStretchLastSection(true);
        ui->tableView->resizeColumnsToContents();
    
    QVBoxLayout *layout = new QVBoxLayout;
        layout->addWidget(ui->tableView);
    
        layout->addWidget(ui->addButton);
        layout->addWidget(ui->deleteButton);
    
    //    QWidget *widget = new QWidget;
        QDockWidget *DockWidget = new QDockWidget;
        DockWidget->setLayout(layout);
        DockWidget->setWidget (DockWidget);
    //            setCentralWidget(widget);
    
       
    
    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #10

      There's no need for any dock widget related code in WayPointTable. Also DockWidget->setWidget (DockWidget); doesn't really make sense.

      One thing to clean, since you used designer for that widget, why are you setting a layout in code ? You should put it directly in through designer.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      saitejS 1 Reply Last reply
      1
      • SGaistS SGaist

        There's no need for any dock widget related code in WayPointTable. Also DockWidget->setWidget (DockWidget); doesn't really make sense.

        One thing to clean, since you used designer for that widget, why are you setting a layout in code ? You should put it directly in through designer.

        saitejS Offline
        saitejS Offline
        saitej
        wrote on last edited by saitej
        #11

        @SGaist
        How to set the tableview to occupy the entire dock window through the designer ? I have put the tableview and the 2 buttons in a formlayout.

        1 Reply Last reply
        0
        • SGaistS Offline
          SGaistS Offline
          SGaist
          Lifetime Qt Champion
          wrote on last edited by
          #12

          Did you set the form layout properly on the widget in designer ?

          Interested in AI ? www.idiap.ch
          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

          saitejS 1 Reply Last reply
          0
          • SGaistS SGaist

            Did you set the form layout properly on the widget in designer ?

            saitejS Offline
            saitejS Offline
            saitej
            wrote on last edited by
            #13

            @SGaist Ya

            1 Reply Last reply
            0
            • SGaistS Offline
              SGaistS Offline
              SGaist
              Lifetime Qt Champion
              wrote on last edited by
              #14

              By the way, why a form layout ?

              You should either have everything in a QVBoxLayout or if you want the buttons to be side by side, put them in a QHBoxLayout within the main QVBoxLayout.

              Interested in AI ? www.idiap.ch
              Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

              saitejS 1 Reply Last reply
              0
              • SGaistS SGaist

                By the way, why a form layout ?

                You should either have everything in a QVBoxLayout or if you want the buttons to be side by side, put them in a QHBoxLayout within the main QVBoxLayout.

                saitejS Offline
                saitejS Offline
                saitej
                wrote on last edited by saitej
                #15

                @SGaist
                These layouts are not giving the required display. I have played with the different layouts. After putting the layout code along with the setcentralwidget, then it had worked when I had used on the mainwindow.

                1 Reply Last reply
                0
                • SGaistS Offline
                  SGaistS Offline
                  SGaist
                  Lifetime Qt Champion
                  wrote on last edited by
                  #16

                  So a table view on top of an add button on top of a delete button ? That's what QVBoxLayout is for.

                  Interested in AI ? www.idiap.ch
                  Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                  saitejS 1 Reply Last reply
                  0
                  • SGaistS SGaist

                    So a table view on top of an add button on top of a delete button ? That's what QVBoxLayout is for.

                    saitejS Offline
                    saitejS Offline
                    saitej
                    wrote on last edited by
                    #17

                    @SGaist I want the display as in image 2. The table occupies the entire window. I am getting as shown in Image 1

                    1 Reply Last reply
                    0
                    • SGaistS Offline
                      SGaistS Offline
                      SGaist
                      Lifetime Qt Champion
                      wrote on last edited by
                      #18

                      If you get what's on image1 it means that you didn't apply the QVBoxLayout properly. With it these buttons can't be side by side unless:

                      1. They are in a QHBoxLayout
                      2. Not in a layout at all but you put them side by side on the widget in designer.

                      Interested in AI ? www.idiap.ch
                      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                      saitejS 1 Reply Last reply
                      0
                      • SGaistS SGaist

                        If you get what's on image1 it means that you didn't apply the QVBoxLayout properly. With it these buttons can't be side by side unless:

                        1. They are in a QHBoxLayout
                        2. Not in a layout at all but you put them side by side on the widget in designer.
                        saitejS Offline
                        saitejS Offline
                        saitej
                        wrote on last edited by
                        #19

                        @SGaist
                        The buttons are not the problem I want the tableview to occupy the entire dock but it is coming in a fixed size how much ever i increase the dock size.
                        Image

                        1 Reply Last reply
                        0
                        • mrjjM Offline
                          mrjjM Offline
                          mrjj
                          Lifetime Qt Champion
                          wrote on last edited by
                          #20

                          hi
                          Here is a sample that uses a UI and scale with the dock
                          https://www.dropbox.com/s/6ipc9ap6hjvcpr9/ilovemydocks.zip?dl=0
                          Maybe it can provide some hint.
                          Note the UI is widget based for this to work.

                          saitejS 1 Reply Last reply
                          0
                          • mrjjM mrjj

                            hi
                            Here is a sample that uses a UI and scale with the dock
                            https://www.dropbox.com/s/6ipc9ap6hjvcpr9/ilovemydocks.zip?dl=0
                            Maybe it can provide some hint.
                            Note the UI is widget based for this to work.

                            saitejS Offline
                            saitejS Offline
                            saitej
                            wrote on last edited by
                            #21

                            @mrjj
                            I have changed the list widget to tablewidget and added the header columns.
                            You can observe that the table fits the entire dock. I have done same thing in my other code also but the table does not fit the entire dock (i have used tableview but i guess it should not matter).
                            Note: the dock code is same.

                            https://www.dropbox.com/s/c04cuu1yoykbtc6/ilovemydocks.zip?dl=0

                            1 Reply Last reply
                            0
                            • mrjjM Offline
                              mrjjM Offline
                              mrjj
                              Lifetime Qt Champion
                              wrote on last edited by
                              #22

                              hi
                              A note
                              if u set setFixedSize, it wont be resizeable ?

                              Well the layout are in the UI file. Inserted as the first thing.

                              It sounds to me that your OTHER code is not using the layout
                              correctly?

                              The scaling is done via layout and layout is the first thing to insert into
                              the UI. then the rest of the controls. Matters not which Widgets. All can
                              be managed by a layout.

                              saitejS 1 Reply Last reply
                              0
                              • mrjjM mrjj

                                hi
                                A note
                                if u set setFixedSize, it wont be resizeable ?

                                Well the layout are in the UI file. Inserted as the first thing.

                                It sounds to me that your OTHER code is not using the layout
                                correctly?

                                The scaling is done via layout and layout is the first thing to insert into
                                the UI. then the rest of the controls. Matters not which Widgets. All can
                                be managed by a layout.

                                saitejS Offline
                                saitejS Offline
                                saitej
                                wrote on last edited by
                                #23

                                @mrjj
                                I dont want the dock to be resizeable but the tableview to fit the dock entirely. I have commented out all the layout code and put vertical layout in the designer. Still, I get the same problem.

                                mrjjM 1 Reply Last reply
                                0
                                • saitejS saitej

                                  @mrjj
                                  I dont want the dock to be resizeable but the tableview to fit the dock entirely. I have commented out all the layout code and put vertical layout in the designer. Still, I get the same problem.

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

                                  @saitej
                                  well if the layout is applied correctly, you can see at once in Designer that
                                  it works so there must be something wrong.

                                  To put the vertical layout, you
                                  right click and go to the layout menu ?

                                  saitejS 1 Reply Last reply
                                  0
                                  • mrjjM mrjj

                                    @saitej
                                    well if the layout is applied correctly, you can see at once in Designer that
                                    it works so there must be something wrong.

                                    To put the vertical layout, you
                                    right click and go to the layout menu ?

                                    saitejS Offline
                                    saitejS Offline
                                    saitej
                                    wrote on last edited by
                                    #25

                                    @mrjj

                                    I am attaching the images of the layout and the output.

                                    layout UI
                                    output

                                    mrjjM 1 Reply Last reply
                                    0
                                    • saitejS saitej

                                      @mrjj

                                      I am attaching the images of the layout and the output.

                                      layout UI
                                      output

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

                                      @saitej said:
                                      super
                                      I can see the error.
                                      You have dragged a layout from left side.
                                      Those are for floating layouts or layout in layout.

                                      To apply layout, simply right click the form,
                                      and use the Layout menu. That will scale.
                                      Do not drag from the left. Right click. :)

                                      You dont have to remove the red layout. Simply right click outside and apply
                                      layout via the layout menu to the form object.

                                      http://doc.qt.io/qt-5/designer-layouts.html

                                      saitejS 1 Reply Last reply
                                      0
                                      • mrjjM mrjj

                                        @saitej said:
                                        super
                                        I can see the error.
                                        You have dragged a layout from left side.
                                        Those are for floating layouts or layout in layout.

                                        To apply layout, simply right click the form,
                                        and use the Layout menu. That will scale.
                                        Do not drag from the left. Right click. :)

                                        You dont have to remove the red layout. Simply right click outside and apply
                                        layout via the layout menu to the form object.

                                        http://doc.qt.io/qt-5/designer-layouts.html

                                        saitejS Offline
                                        saitejS Offline
                                        saitej
                                        wrote on last edited by
                                        #27

                                        @mrjj
                                        Thanks a lot!!

                                        I should have sent the UI image earlier. Sorry for the inconvenience.

                                        mrjjM 1 Reply Last reply
                                        1
                                        • saitejS saitej

                                          @mrjj
                                          Thanks a lot!!

                                          I should have sent the UI image earlier. Sorry for the inconvenience.

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

                                          @saitej
                                          Np. The drag able layout are a bit non intuitive :)
                                          Note:
                                          If you have a completely new form with no widgets, you must
                                          place 1 widget on form for the right click menu to be active . that
                                          fooled me a lot in the beginning. :)

                                          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