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. QTableWidget setColumnWidth didn't work
Forum Updated to NodeBB v4.3 + New Features

QTableWidget setColumnWidth didn't work

Scheduled Pinned Locked Moved Solved General and Desktop
11 Posts 4 Posters 4.4k 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.
  • VRoninV Offline
    VRoninV Offline
    VRonin
    wrote on last edited by
    #2

    What does ui->table_widget->horizontalHeader()->sectionResizeMode(); returns? it should be Fixed for you to be able to set the column width manually

    "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
    ~Napoleon Bonaparte

    On a crusade to banish setIndexWidget() from the holy land of Qt

    C 1 Reply Last reply
    0
    • VRoninV VRonin

      What does ui->table_widget->horizontalHeader()->sectionResizeMode(); returns? it should be Fixed for you to be able to set the column width manually

      C Offline
      C Offline
      chris_rookie
      wrote on last edited by
      #3

      @VRonin
      ui->table_widget->setColumnCount(4);
      ui->table_widget->setColumnWidth(0, 134);
      ui->table_widget->setColumnWidth(1, 210);
      ui->table_widget->setColumnWidth(2, 60);
      ui->table_widget->setColumnWidth(3, 134);
      //ui->table_widget->horizontalHeader()->setStretchLastSection(true);
      ui->table_widget->horizontalHeader()->setVisible(false);
      ui->table_widget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
      ui->table_widget->verticalHeader()->setHidden(true);
      ui->table_widget->setEditTriggers(QAbstractItemView::NoEditTriggers);
      ui->table_widget->setSelectionMode(QAbstractItemView::SingleSelection);
      ui->table_widget->setSelectionBehavior(QAbstractItemView::SelectRows);

      now, I wrote it as this, and display as this.
      294a2ba9-df48-4c26-8be2-0b9fe9815f34-image.png

      1 Reply Last reply
      0
      • VRoninV Offline
        VRoninV Offline
        VRonin
        wrote on last edited by
        #4

        ui->table_widget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); overwrites all the previous calls to ui->table_widget->setColumnWidth().
        You should call ui->table_widget->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed); before calling setColumnWidth()

        "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
        ~Napoleon Bonaparte

        On a crusade to banish setIndexWidget() from the holy land of Qt

        C 1 Reply Last reply
        4
        • VRoninV VRonin

          ui->table_widget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); overwrites all the previous calls to ui->table_widget->setColumnWidth().
          You should call ui->table_widget->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed); before calling setColumnWidth()

          C Offline
          C Offline
          chris_rookie
          wrote on last edited by
          #5

          @VRonin
          ui->table_widget->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
          ui->table_widget->setColumnCount(4); //缩写 内容 位置 操作
          ui->table_widget->setColumnWidth(0, 134);
          ui->table_widget->setColumnWidth(1, 210);
          ui->table_widget->setColumnWidth(2, 60);
          ui->table_widget->setColumnWidth(3, 134);
          //ui->table_widget->horizontalHeader()->setStretchLastSection(true);

          3392269a-67a5-479b-9cce-b23a4451db9b-image.png

          my aim is to let the four columns be full of the row and display as the ratio I set。
          How could I achieve ui->table_widget->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
          ui->table_widget->setColumnCount(4); //缩写 内容 位置 操作
          ui->table_widget->setColumnWidth(0, 134);
          ui->table_widget->setColumnWidth(1, 210);
          ui->table_widget->setColumnWidth(2, 60);
          ui->table_widget->setColumnWidth(3, 134);
          //ui->table_widget->horizontalHeader()->setStretchLastSection(true);

          3392269a-67a5-479b-9cce-b23a4451db9b-image.png

          my aim is to let the four columns be full of the row and display as the ratio I set。
          How could I achieve it

          1 Reply Last reply
          0
          • A.A.SEZENA Offline
            A.A.SEZENA Offline
            A.A.SEZEN
            wrote on last edited by
            #6
            //1
                    ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
                    ui->tableWidget->setAlternatingRowColors(true);
                    ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
                    ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectItems);
                //  ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
                    ui->tableWidget->setShowGrid(false);
                    ui->tableWidget->verticalHeader()->setVisible(false);
                    ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
                //2    
                    ui->tableWidget->clear();
                    ui->tableWidget->setRowCount(0);
                    ui->tableWidget->setColumnCount(4);
                    ui->tableWidget->setColumnWidth(0, 134);
                    ui->tableWidget->setColumnWidth(1, 210);
                    ui->tableWidget->setColumnWidth(2, 60);
                    ui->tableWidget->setColumnWidth(3, 134);
                //3    
                    ui->tableWidget->setHorizontalHeaderLabels(QStringList() << "1" << "2" << "3" << "4");
                //4    
                    ui->tableWidget->setRowCount(1);
                    ui->tableWidget->setItem(0, 1, new QTableWidgetItem("A"));
                    ui->tableWidget->setItem(0, 2, new QTableWidgetItem("B"));
                    ui->tableWidget->setItem(0, 3, new QTableWidgetItem("C"));
                    ui->tableWidget->setItem(0, 4, new QTableWidgetItem("D"));
                
            
            C 1 Reply Last reply
            0
            • A.A.SEZENA A.A.SEZEN
              //1
                      ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
                      ui->tableWidget->setAlternatingRowColors(true);
                      ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
                      ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectItems);
                  //  ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
                      ui->tableWidget->setShowGrid(false);
                      ui->tableWidget->verticalHeader()->setVisible(false);
                      ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
                  //2    
                      ui->tableWidget->clear();
                      ui->tableWidget->setRowCount(0);
                      ui->tableWidget->setColumnCount(4);
                      ui->tableWidget->setColumnWidth(0, 134);
                      ui->tableWidget->setColumnWidth(1, 210);
                      ui->tableWidget->setColumnWidth(2, 60);
                      ui->tableWidget->setColumnWidth(3, 134);
                  //3    
                      ui->tableWidget->setHorizontalHeaderLabels(QStringList() << "1" << "2" << "3" << "4");
                  //4    
                      ui->tableWidget->setRowCount(1);
                      ui->tableWidget->setItem(0, 1, new QTableWidgetItem("A"));
                      ui->tableWidget->setItem(0, 2, new QTableWidgetItem("B"));
                      ui->tableWidget->setItem(0, 3, new QTableWidgetItem("C"));
                      ui->tableWidget->setItem(0, 4, new QTableWidgetItem("D"));
                  
              
              C Offline
              C Offline
              chris_rookie
              wrote on last edited by
              #7

              @A-A-SEZEN said in QTableWidget setColumnWidth didn't work:

              erticalHeader(

              Hi,
              Thanks for your answer.
              I just do like what you said, but it still doesn't work.

              ui->tableWidget->setAlternatingRowColors(true);
              ui->tableWidget->setShowGrid(false);

              And I think those code didn't effect the result. so I didn't add it.
              Should I wrot them all?

              Pl45m4P A.A.SEZENA 2 Replies Last reply
              0
              • C chris_rookie

                @A-A-SEZEN said in QTableWidget setColumnWidth didn't work:

                erticalHeader(

                Hi,
                Thanks for your answer.
                I just do like what you said, but it still doesn't work.

                ui->tableWidget->setAlternatingRowColors(true);
                ui->tableWidget->setShowGrid(false);

                And I think those code didn't effect the result. so I didn't add it.
                Should I wrot them all?

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

                @chris_rookie

                Try

                ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::ResizeMode::ResizeToContents);
                

                But then you are not able to resize the width manually. It automatically resizes to its content.
                "aaaaaa....." should be "aaaaaaaaaaaaaaaaaaaaaaaaaaa" then.
                (I dont know if can work with this or if you need to resize manually or programmatically)


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

                ~E. W. Dijkstra

                C 1 Reply Last reply
                0
                • Pl45m4P Pl45m4

                  @chris_rookie

                  Try

                  ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::ResizeMode::ResizeToContents);
                  

                  But then you are not able to resize the width manually. It automatically resizes to its content.
                  "aaaaaa....." should be "aaaaaaaaaaaaaaaaaaaaaaaaaaa" then.
                  (I dont know if can work with this or if you need to resize manually or programmatically)

                  C Offline
                  C Offline
                  chris_rookie
                  wrote on last edited by
                  #9

                  @Pl45m4 said in QTableWidget setColumnWidth didn't work:

                  manually

                  Thank you.
                  I tried
                  ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::ResizeMode::ResizeToContents);
                  It didnt work.
                  I'll try (I dont know if can work with this or if you need to resize manually or programmatically)

                  1 Reply Last reply
                  0
                  • C Offline
                    C Offline
                    chris_rookie
                    wrote on last edited by
                    #10

                    ui->table_widget->resizeColumnToContents(1);

                    I found this in my code. I was so stupid.
                    After I removed it, It works.
                    Thank you all very much And sorry about my mistake.

                    1 Reply Last reply
                    2
                    • C chris_rookie

                      @A-A-SEZEN said in QTableWidget setColumnWidth didn't work:

                      erticalHeader(

                      Hi,
                      Thanks for your answer.
                      I just do like what you said, but it still doesn't work.

                      ui->tableWidget->setAlternatingRowColors(true);
                      ui->tableWidget->setShowGrid(false);

                      And I think those code didn't effect the result. so I didn't add it.
                      Should I wrot them all?

                      A.A.SEZENA Offline
                      A.A.SEZENA Offline
                      A.A.SEZEN
                      wrote on last edited by
                      #11

                      @chris_rookie
                      Hi,
                      I answered your question before I fully understood it.
                      I always add elements to help others, if possible.
                      I wanted to have a message with QTableWidget that I shared the data demonstration with side features.

                      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