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. Adding tableview to scene, appearing small and with scroll bars
Forum Updated to NodeBB v4.3 + New Features

Adding tableview to scene, appearing small and with scroll bars

Scheduled Pinned Locked Moved Solved General and Desktop
qgraphicsviewqtableviewqt desktop
18 Posts 2 Posters 2.1k Views 1 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.
  • S Offline
    S Offline
    sachinrd
    wrote on last edited by sachinrd
    #1

    Hello,
    I have added a QTableView widget to a scene associated with a graphics view. But The tableview is appearing very small with scroll bars enabled in the view. I Do know that i need to do some coordinate conversions. Im a newbie to qt and can someone help me what conversions needs to be made . Thanks for any help in advance.
    Screenshot 2021-05-30 at 10.25.43 PM.png

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

      Hi
      Im not sure what it uses for default size (size hit function, i guess) but you can just
      call resize() before calling scene->addWidget()

      alt text

      auto m_pTableWidget = new QTableWidget();
          m_pTableWidget->setRowCount(10);
          m_pTableWidget->setColumnCount(3);
          m_pTableWidget->setHorizontalHeaderLabels(QStringList() << "#" << "Name" << "Text");   
          m_pTableWidget->setItem(0, 1, new QTableWidgetItem("Hello"));
          m_pTableWidget->resize(400,400);
      
          scene->addWidget( m_pTableWidget);
      
      
      1 Reply Last reply
      0
      • S Offline
        S Offline
        sachinrd
        wrote on last edited by sachinrd
        #3

        @mrjj said in Adding tableview to scene, appearing small and with scroll bars:

        400,400

        Thanks for the quick reply @mrjj . Im using a qtableview with a model. so the data is inserted dynamically .. i wont be able to hardcode the size in resize function right.
        The issue can be reproducible with the below code in a mainwindow application.

            ui->setupUi(this);
        
            QStandardItemModel *indexPageModel=new QStandardItemModel;
            QTableView *indexPageTableView=new QTableView();
            indexPageTableView->setModel(indexPageModel);
        
        //row1
            QStandardItem *item00 = new QStandardItem("   Title  ");
            item00->setTextAlignment(Qt::AlignCenter);
            indexPageModel->setItem(0, 0, item00);
        
            QStandardItem *item01 = new QStandardItem("  X-axis  ");
            item01->setTextAlignment(Qt::AlignCenter);
            indexPageModel->setItem(0, 1, item01);
        
            QStandardItem *item02 = new QStandardItem("  Y-axis  ");
            item02->setTextAlignment(Qt::AlignCenter);
            indexPageModel->setItem(0, 2, item02);
        
            QStandardItem *item03 = new QStandardItem("    Page#    ");
            item03->setTextAlignment(Qt::AlignCenter);
            indexPageModel->setItem(0, 3, item03);
        
            QStandardItem *item04 = new QStandardItem("    Trend#    ");
            item04->setTextAlignment(Qt::AlignCenter);
            indexPageModel->setItem(0, 4, item04);
        
            QStandardItem *item05 = new QStandardItem("Trend Relationship");
            item05->setTextAlignment(Qt::AlignCenter);
            indexPageModel->setItem(0, 5, item05);
        
            indexPageTableView->resizeColumnsToContents();
        
            QGraphicsScene *scene=new QGraphicsScene(this);
            QGraphicsProxyWidget *proxy = scene->addWidget(indexPageTableView);
            ui->graphicsView->setScene(scene);
            ui->graphicsView->setAlignment(Qt::AlignTop | Qt::AlignLeft);```
        1 Reply Last reply
        0
        • mrjjM Offline
          mrjjM Offline
          mrjj
          Lifetime Qt Champion
          wrote on last edited by mrjj
          #4

          Hi
          Normally you assign some portion of the form to the table and if its bigger, it get scrollbars.

          Is your goal to sum up all the header size so that it never will show scrollbars ?

          Anyway, you could do like

          .....
            indexPageTableView->resizeColumnsToContents();
          
             int width = (indexPageModel->columnCount() - 1) + indexPageTableView->verticalHeader()->width();    
                  for (int column = 0; column < indexPageModel->columnCount(); column++)    
                      width = width + indexPageTableView->columnWidth(column);    
            indexPageTableView->setMinimumWidth(width);
          

          alt text

          1 Reply Last reply
          1
          • S Offline
            S Offline
            sachinrd
            wrote on last edited by
            #5

            This works perfect . Thanks you so much.

            mrjjM 1 Reply Last reply
            0
            • S sachinrd

              This works perfect . Thanks you so much.

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

              @sachinrd
              Np. providing code I can just run always help the motivation to have a look.

              1 Reply Last reply
              0
              • S Offline
                S Offline
                sachinrd
                wrote on last edited by
                #7

                Hi @mrjj . I am finding it difficult in one more problem w.r.t to the current thread. with the solution that you have given above i am able to set geometry for the tableview so that scroll bars dont appear. this works in mac. but in windows the height and width doesnt fit the actual height and width and scroll bars are appearing.(so is the solution platform independent?) Can you pls help me here ?
                Thanks for the help in advance.

                mrjjM 1 Reply Last reply
                0
                • S sachinrd

                  Hi @mrjj . I am finding it difficult in one more problem w.r.t to the current thread. with the solution that you have given above i am able to set geometry for the tableview so that scroll bars dont appear. this works in mac. but in windows the height and width doesnt fit the actual height and width and scroll bars are appearing.(so is the solution platform independent?) Can you pls help me here ?
                  Thanks for the help in advance.

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

                  @sachinrd
                  Hi that is a bit odd as I did this on windows to test :)
                  It should be platform independent but as with all font stuff, there might be
                  difference.

                  So how many pixels are missing for it not to show scrollbars ?

                  like
                  indexPageTableView->setMinimumWidth(width+25);

                  or much , much more ?

                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    sachinrd
                    wrote on last edited by
                    #9
                    This post is deleted!
                    1 Reply Last reply
                    0
                    • S Offline
                      S Offline
                      sachinrd
                      wrote on last edited by
                      #10

                      Hi @mrjj . Thanks for the quick reply. around some 20 to 25 pixels is missing . we are doing resizeColumnsToContents() right. This should be considering the font sizes right ?

                      mrjjM 1 Reply Last reply
                      0
                      • S sachinrd

                        Hi @mrjj . Thanks for the quick reply. around some 20 to 25 pixels is missing . we are doing resizeColumnsToContents() right. This should be considering the font sizes right ?

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

                        @sachinrd
                        Hi
                        yes resizeColumnsToContents();
                        should calculate the needed space with the current font.
                        and we then add up the needed sizes and expand the view.

                        Do you use any stylesheet or anything that could make the calculation a bit off ?

                        I don't see it here from a fast test so i wonder what difference it.

                        1 Reply Last reply
                        0
                        • S Offline
                          S Offline
                          sachinrd
                          wrote on last edited by
                          #12

                          @mrjj . yeah i am using this style:
                          indexPageTableView->setStyleSheet("QTableView::item{border: 2px solid black}");

                          mrjjM 1 Reply Last reply
                          0
                          • S sachinrd

                            @mrjj . yeah i am using this style:
                            indexPageTableView->setStyleSheet("QTableView::item{border: 2px solid black}");

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

                            @sachinrd
                            Hi
                            Ok
                            can you check without if its then accurate ?

                            1 Reply Last reply
                            0
                            • S Offline
                              S Offline
                              sachinrd
                              wrote on last edited by
                              #14

                              sure let me check.

                              1 Reply Last reply
                              0
                              • S Offline
                                S Offline
                                sachinrd
                                wrote on last edited by
                                #15
                                This post is deleted!
                                1 Reply Last reply
                                0
                                • S Offline
                                  S Offline
                                  sachinrd
                                  wrote on last edited by sachinrd
                                  #16

                                  Hi @mrjj . i have removed the stylesheet changes. it still didnt work!
                                  61207492-5a56-4b7a-898c-82485b8a54ea-image.png

                                  mrjjM 1 Reply Last reply
                                  0
                                  • S sachinrd

                                    Hi @mrjj . i have removed the stylesheet changes. it still didnt work!
                                    61207492-5a56-4b7a-898c-82485b8a54ea-image.png

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

                                    @sachinrd
                                    Hi
                                    try setting
                                    alt text

                                    and see if then the table is not fully drawn.
                                    I recall it will "reserve" some space for the scrollbars and hence the width of a scrollbar is missing in the calcualation.

                                    1 Reply Last reply
                                    0
                                    • S Offline
                                      S Offline
                                      sachinrd
                                      wrote on last edited by
                                      #18

                                      @mrjj . Thanks a ton for your help. Its working perfectly.

                                      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