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. Show integer value in qtable widget
Qt 6.11 is out! See what's new in the release blog

Show integer value in qtable widget

Scheduled Pinned Locked Moved Unsolved General and Desktop
16 Posts 5 Posters 8.4k 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.
  • VRoninV Offline
    VRoninV Offline
    VRonin
    wrote on last edited by
    #6

    Huge!

    Just for a laugh, try filling a column with the numbers from 1 to 100 using your method and then sort the column.

    on top of that, QString::number and QString::toInt should never be used for things that are shown on the ui. Always use QLocale::toString and QLocale::toInt with the locale of the widget you are presenting the value to

    "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

    artwawA 1 Reply Last reply
    4
    • VRoninV VRonin

      Huge!

      Just for a laugh, try filling a column with the numbers from 1 to 100 using your method and then sort the column.

      on top of that, QString::number and QString::toInt should never be used for things that are shown on the ui. Always use QLocale::toString and QLocale::toInt with the locale of the widget you are presenting the value to

      artwawA Offline
      artwawA Offline
      artwaw
      wrote on last edited by
      #7

      @VRonin said in Show integer value in qtable widget:

      QString::number and QString::toInt should never be used for things that are shown on the ui.

      I apologize for hijacking the thread but what if you have just plain integers and you are sure that values are locale independent?

      For more information please re-read.

      Kind Regards,
      Artur

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

        While we think arab numbers are universal, they are not. Chinese locales, for example, have special unicode chars for numbers (0 = 零, 1 = 一) . Even arabic has different chars for arab numbers

        "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

        artwawA Taz742T 2 Replies Last reply
        4
        • VRoninV VRonin

          While we think arab numbers are universal, they are not. Chinese locales, for example, have special unicode chars for numbers (0 = 零, 1 = 一) . Even arabic has different chars for arab numbers

          artwawA Offline
          artwawA Offline
          artwaw
          wrote on last edited by
          #9

          @VRonin Thank you!

          For more information please re-read.

          Kind Regards,
          Artur

          1 Reply Last reply
          0
          • Taz742T Taz742

            @QTlearner90

            ui->tableWidget_3->setItem(0, 1, new QTableWidgetItem(QString::number(rgnt.R_id) ) );
            

            https://www.google.ge/search?q=number+to+qstring&oq=number+to+qstring&aqs=chrome.0.0j69i60l3j0l2.4535j0j7&sourceid=chrome&ie=UTF-8

            Q Offline
            Q Offline
            QTlearner90
            wrote on last edited by
            #10

            @Taz742 thank you.. it works..

            Taz742T 1 Reply Last reply
            0
            • Q QTlearner90

              @Taz742 thank you.. it works..

              Taz742T Offline
              Taz742T Offline
              Taz742
              wrote on last edited by
              #11

              @QTlearner90
              Yes it works. But review the comments and then make a decision.
              I think it's better if you use another method what @VRonin said.

              auto widItem = new QTableWidgetItem;
              widItem->setData(Qt::EditRole,rgnt.R_id);
              ui->tableWidget_3->setItem(0,1,widItem);
              

              Do what you want.

              1 Reply Last reply
              0
              • VRoninV VRonin

                While we think arab numbers are universal, they are not. Chinese locales, for example, have special unicode chars for numbers (0 = 零, 1 = 一) . Even arabic has different chars for arab numbers

                Taz742T Offline
                Taz742T Offline
                Taz742
                wrote on last edited by
                #12

                @VRonin
                Why does not it take Qt::Checked or Qt::Unchecked?

                Do what you want.

                VRoninV 1 Reply Last reply
                0
                • Taz742T Taz742

                  @VRonin
                  Why does not it take Qt::Checked or Qt::Unchecked?

                  VRoninV Offline
                  VRoninV Offline
                  VRonin
                  wrote on last edited by
                  #13

                  @Taz742 said in Show integer value in qtable widget:

                  @VRonin
                  Why does not it take Qt::Checked or Qt::Unchecked?

                  You need to adjust the flag too for that role to matter widItem->setFlags(widItem->flags() | Qt::ItemIsUserCheckable);

                  "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

                  Taz742T 1 Reply Last reply
                  3
                  • VRoninV VRonin

                    @Taz742 said in Show integer value in qtable widget:

                    @VRonin
                    Why does not it take Qt::Checked or Qt::Unchecked?

                    You need to adjust the flag too for that role to matter widItem->setFlags(widItem->flags() | Qt::ItemIsUserCheckable);

                    Taz742T Offline
                    Taz742T Offline
                    Taz742
                    wrote on last edited by Taz742
                    #14

                    @VRonin Can not I give it my function?

                    QTableWidgetItem *dlgGroups::GetNewItem(const QVariant value){
                        auto c_item = new QTableWidgetItem;
                             c_item->setData(Qt::UserRole, value);
                        return (QTableWidgetItem*) c_item;
                    }
                    
                    Contact *cont = globalall->GetConact(CUID);
                    
                    m_table->insertRow(0);
                    m_table->setItem(0, 0, GetNewItem(InsertQry.lastInsertId().toString()));
                    m_table->setItem(0, 1, GetNewItem(cont->UID));
                    m_table->setItem(0, 2, GetNewItem(Qt::Unchecked)); // ?
                    m_table->setItem(0, 3, GetNewItem(cont->Name + " " + cont->FamilyName));
                    m_table->setItem(0, 4, GetNewItem(cont->Mobile));
                    m_table->setItem(0, 5, GetNewItem(cont->Type ? cont->Identification : cont->PersonID));
                    

                    Do what you want.

                    VRoninV 1 Reply Last reply
                    0
                    • Taz742T Taz742

                      @VRonin Can not I give it my function?

                      QTableWidgetItem *dlgGroups::GetNewItem(const QVariant value){
                          auto c_item = new QTableWidgetItem;
                               c_item->setData(Qt::UserRole, value);
                          return (QTableWidgetItem*) c_item;
                      }
                      
                      Contact *cont = globalall->GetConact(CUID);
                      
                      m_table->insertRow(0);
                      m_table->setItem(0, 0, GetNewItem(InsertQry.lastInsertId().toString()));
                      m_table->setItem(0, 1, GetNewItem(cont->UID));
                      m_table->setItem(0, 2, GetNewItem(Qt::Unchecked)); // ?
                      m_table->setItem(0, 3, GetNewItem(cont->Name + " " + cont->FamilyName));
                      m_table->setItem(0, 4, GetNewItem(cont->Mobile));
                      m_table->setItem(0, 5, GetNewItem(cont->Type ? cont->Identification : cont->PersonID));
                      
                      VRoninV Offline
                      VRoninV Offline
                      VRonin
                      wrote on last edited by VRonin
                      #15

                      @Taz742

                      1. you still did not set the flag
                      2. you are saving everything in Qt::UserRole which is never used by Qt's standard views
                      QTableWidgetItem *dlgGroups::GetNewItem(const QVariant& value, int role = Qt::EditRole){
                          auto c_item = new QTableWidgetItem;
                          c_item->setData(role , value);
                          if(role==Qt::CheckStateRole)
                              c_item->setFlags(c_item->flags() | Qt::ItemIsUserCheckable);
                          return c_item;
                      }
                      

                      then you can use m_table->setItem(0, 2, GetNewItem(Qt::Unchecked,Qt::CheckStateRole));

                      "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

                      Taz742T 1 Reply Last reply
                      2
                      • VRoninV VRonin

                        @Taz742

                        1. you still did not set the flag
                        2. you are saving everything in Qt::UserRole which is never used by Qt's standard views
                        QTableWidgetItem *dlgGroups::GetNewItem(const QVariant& value, int role = Qt::EditRole){
                            auto c_item = new QTableWidgetItem;
                            c_item->setData(role , value);
                            if(role==Qt::CheckStateRole)
                                c_item->setFlags(c_item->flags() | Qt::ItemIsUserCheckable);
                            return c_item;
                        }
                        

                        then you can use m_table->setItem(0, 2, GetNewItem(Qt::Unchecked,Qt::CheckStateRole));

                        Taz742T Offline
                        Taz742T Offline
                        Taz742
                        wrote on last edited by
                        #16

                        @VRonin
                        Many Thank!!!

                        Do what you want.

                        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