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.
  • K Offline
    K Offline
    kishore_hemmady
    wrote on last edited by
    #3

    hi @jsulm
    i need to declare an array of object for the QListWidgetItem class;
    something like the below

    QListWidgetItem *nodeItem;

    nodeItem=new QListWidgetItem[NUMBERS]("videoNewItem", ui->video_listWidget);

    how can i create the array of object here with the parameterized constructor call???

    jsulmJ 1 Reply Last reply
    0
    • K kishore_hemmady

      hi @jsulm
      i need to declare an array of object for the QListWidgetItem class;
      something like the below

      QListWidgetItem *nodeItem;

      nodeItem=new QListWidgetItem[NUMBERS]("videoNewItem", ui->video_listWidget);

      how can i create the array of object here with the parameterized constructor call???

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

      @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);
      

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

      K 1 Reply Last reply
      3
      • 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