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

QTableview not fitting the entire dockwidget window

Scheduled Pinned Locked Moved Solved General and Desktop
28 Posts 3 Posters 9.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.
  • mrjjM mrjj

    @saitej said:

    setCentralWidget

    This is only valid with a QMainwindow. :)

    You would do
    (the code u shown)
    and then
    DockWidget->setWidget (widget);

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

    @mrjj :

    I already tried dis code but of no use. It is giving the same output.

       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);
    
    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #8

      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.

      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

        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

                                          • Login

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