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.0k 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

    Hi,

    Did you call QDockWidget::setWidget ?

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

    @SGaist :
    Ya I have called that code ...

    1 Reply Last reply
    0
    • mrjjM mrjj

      @saitej said:
      hi for a docked window, you would add a
      layout to it first and then insert the controls
      in that layout. then it will fit all area of window.

      http://doc.qt.io/qt-5/layout.html

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

      @mrjj
      Ya I have already used this code.

      QVBoxLayout *layout = new QVBoxLayout;
          layout->addWidget(ui->tableView);
      
          layout->addWidget(ui->addButton);
          layout->addWidget(ui->deleteButton);
      
          QWidget *widget = new QWidget;
          widget->setLayout(layout);
              setCentralWidget(widget);
      

      But I am getting the following error.
      error: 'setCentralWidget' was not declared in this scope
      setCentralWidget(widget);
      ^

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

        @saitej said:

        setCentralWidget

        This is only valid with a QMainwindow. :)

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

        saitejS 1 Reply Last reply
        0
        • 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

                                          • Login

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