Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. How to create multiple QListWidgetItem instances dynamically in Qt?
Forum Updated to NodeBB v4.3 + New Features

How to create multiple QListWidgetItem instances dynamically in Qt?

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
15 Posts 4 Posters 3.2k 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.
  • J.HilkJ Offline
    J.HilkJ Offline
    J.Hilk
    Moderators
    wrote on last edited by
    #5

    additionaly to what @jsulm said,

    a QlistWidgetItem is rather useless without QListWidget to put them into, and QListWidget has 3 functions to access any QListWidgetItem it contains:

    • QListWidgetItem * item(int row) const
    • QListWidgetItem * itemAt(const QPoint & p) const
    • QListWidgetItem * itemAt(int x, int y) const

    Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


    Q: What's that?
    A: It's blue light.
    Q: What does it do?
    A: It turns blue.

    1 Reply Last reply
    2
    • jsulmJ jsulm

      @kishore_hemmady Why do you want to have an array? You can use a QVector or QList:

      QList<QListWidgetItem*> items;
      for (int i = 0; i < 10; ++i)
          items.append(new QListWidgetItem(QString("videoNewItem_") + i, ui->video_listWidget));
      

      If you really want to have an array:

      QListWidgetItem* items[10];
      for (int i = 0; i < 10; ++i)
          items[i] = new QListWidgetItem(QString("videoNewItem_") + i, ui->video_listWidget);
      
      K Offline
      K Offline
      kishore_hemmady
      wrote on last edited by
      #6

      thank you @jsulm
      How can i access the Nth items in the list.

      jsulmJ 1 Reply Last reply
      0
      • K kishore_hemmady

        thank you @jsulm
        How can i access the Nth items in the list.

        jsulmJ Offline
        jsulmJ Offline
        jsulm
        Lifetime Qt Champion
        wrote on last edited by
        #7

        @kishore_hemmady Why don't you read documentation? http://doc.qt.io/qt-5/qlist.html
        items[i]...

        https://forum.qt.io/topic/113070/qt-code-of-conduct

        K 1 Reply Last reply
        1
        • jsulmJ jsulm

          @kishore_hemmady Why don't you read documentation? http://doc.qt.io/qt-5/qlist.html
          items[i]...

          K Offline
          K Offline
          kishore_hemmady
          wrote on last edited by
          #8

          @jsulm
          i am doing the same , its not showing error but crashing.
          thats why asked is there any other method to do this.

          K 1 Reply Last reply
          0
          • K kishore_hemmady

            @jsulm
            i am doing the same , its not showing error but crashing.
            thats why asked is there any other method to do this.

            K Offline
            K Offline
            kishore_hemmady
            wrote on last edited by
            #9

            @jsulm

            HI

            this is my code for getting playlist for video files for different video zones.

            QList<QListWidgetItem*> videoNewItem
            for(INT32 i=0;i<i32NumberOfVideoZones;i++){
                        videoNewItem.append(new QListWidgetItem(QString("videoNewItem_") + i, ui->video_listWidget));
                    }
            

            void MainWindow::on_add_file_clicked()
            {

                         int row = 1;
                      videoNewItem[i32tContainerindex] = new QListWidgetItem(QString("videoNewItem_") + i32tContainerindex,    ui->video_listWidget);
                            videoNewItem[i32tContainerindex]->setFlags (videoNewItem[i32tContainerindex]->flags() | Qt::ItemIsUserCheckable);
                           videoNewItem[i32tContainerindex]->setCheckState (Qt::Unchecked);
            
                            videoNewItem[i32tContainerindex]->setText ((ui->video_file_name_lineEdit->text()));
                            ui->video_listWidget->insertItem (row, videoNewItem[i32tContainerindex]);
                            ui->video_listWidget->addItem (videoNewItem[i32tContainerindex]);
                            ui->video_listWidget->show();
                            ui->video_file_name_lineEdit->setText ("");
                            ui->video_listWidget->addItem (videoNewItem[i32tContainerindex]);
                            ui->video_listWidget->repaint();
                            GUI_videostruct[i32tContainerindex].videoFileName=ui->video_listWidget->item(0)->text();
            

            }

            but when i change the video zone from index 0 to 1, i ll retain the value(files) of videoNewItem[0] in videoNewItem[1] listWidget playlist
            i want to get the different files for different zones.

            jsulmJ 1 Reply Last reply
            0
            • K kishore_hemmady

              @jsulm

              HI

              this is my code for getting playlist for video files for different video zones.

              QList<QListWidgetItem*> videoNewItem
              for(INT32 i=0;i<i32NumberOfVideoZones;i++){
                          videoNewItem.append(new QListWidgetItem(QString("videoNewItem_") + i, ui->video_listWidget));
                      }
              

              void MainWindow::on_add_file_clicked()
              {

                           int row = 1;
                        videoNewItem[i32tContainerindex] = new QListWidgetItem(QString("videoNewItem_") + i32tContainerindex,    ui->video_listWidget);
                              videoNewItem[i32tContainerindex]->setFlags (videoNewItem[i32tContainerindex]->flags() | Qt::ItemIsUserCheckable);
                             videoNewItem[i32tContainerindex]->setCheckState (Qt::Unchecked);
              
                              videoNewItem[i32tContainerindex]->setText ((ui->video_file_name_lineEdit->text()));
                              ui->video_listWidget->insertItem (row, videoNewItem[i32tContainerindex]);
                              ui->video_listWidget->addItem (videoNewItem[i32tContainerindex]);
                              ui->video_listWidget->show();
                              ui->video_file_name_lineEdit->setText ("");
                              ui->video_listWidget->addItem (videoNewItem[i32tContainerindex]);
                              ui->video_listWidget->repaint();
                              GUI_videostruct[i32tContainerindex].videoFileName=ui->video_listWidget->item(0)->text();
              

              }

              but when i change the video zone from index 0 to 1, i ll retain the value(files) of videoNewItem[0] in videoNewItem[1] listWidget playlist
              i want to get the different files for different zones.

              jsulmJ Offline
              jsulmJ Offline
              jsulm
              Lifetime Qt Champion
              wrote on last edited by
              #10

              @kishore_hemmady Are you talking about changing i32tContainerindex from 0 to 1? Because I don't understand your description. Where and how do you change it? Are you sure it is actually changed?

              https://forum.qt.io/topic/113070/qt-code-of-conduct

              1 Reply Last reply
              0
              • K Offline
                K Offline
                kishore_hemmady
                wrote on last edited by
                #11

                yes I am changing i32tContainerindex from 0 to 1.
                I am developing a page which contains listWidget, whenever i am switching from videoNewItem[0]'s listWidget to videoNewItem[1]
                listWidget i am not able to show only videoNewItem[1] listWidget rather i am getting the content of both the listWidget

                jsulmJ 1 Reply Last reply
                0
                • K kishore_hemmady

                  yes I am changing i32tContainerindex from 0 to 1.
                  I am developing a page which contains listWidget, whenever i am switching from videoNewItem[0]'s listWidget to videoNewItem[1]
                  listWidget i am not able to show only videoNewItem[1] listWidget rather i am getting the content of both the listWidget

                  jsulmJ Offline
                  jsulmJ Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on last edited by
                  #12

                  @kishore_hemmady Sorry, I don't know your code, so I don't know what you're doing wrong. Did you try to debug your app to see what happens?

                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                  K 1 Reply Last reply
                  0
                  • jsulmJ jsulm

                    @kishore_hemmady Sorry, I don't know your code, so I don't know what you're doing wrong. Did you try to debug your app to see what happens?

                    K Offline
                    K Offline
                    kishore_hemmady
                    wrote on last edited by
                    #13
                    This post is deleted!
                    jsulmJ 1 Reply Last reply
                    0
                    • K kishore_hemmady

                      This post is deleted!

                      jsulmJ Offline
                      jsulmJ Offline
                      jsulm
                      Lifetime Qt Champion
                      wrote on last edited by
                      #14

                      @kishore_hemmady I already understood before, but how this picture can help me to find the issue? The issue is in your code...

                      https://forum.qt.io/topic/113070/qt-code-of-conduct

                      1 Reply Last reply
                      1
                      • SGaistS Offline
                        SGaistS Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on last edited by
                        #15

                        Hi,

                        That looks like over engineering. Furthermore, you are calling insertItem and right after that addItem twice with exactly the same item. Then you also update your GUI_videostruct data using an index on one side and a hardcoded value on the other side.

                        You should rather explain what exactly you are trying to achieve. Also since you are using a QListWidget, there's no real need to keep a list of the item besides since you already have them available through QListWidget.

                        Interested in AI ? www.idiap.ch
                        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                        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