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. QListView issue
Forum Updated to NodeBB v4.3 + New Features

QListView issue

Scheduled Pinned Locked Moved Solved General and Desktop
14 Posts 3 Posters 1.3k 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.
  • Christian EhrlicherC Online
    Christian EhrlicherC Online
    Christian Ehrlicher
    Lifetime Qt Champion
    wrote on last edited by
    #2

    QListView::setModel() takes a pointer.

    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
    Visit the Qt Academy at https://academy.qt.io/catalog

    1 Reply Last reply
    1
    • J Offline
      J Offline
      jss193
      wrote on last edited by
      #3

      I know, but even passing memory address of model it prompts the following issue “cannot initialize a parameter of type QAbstractItemModel with an lvalue of type QStringlistModel”

      1 Reply Last reply
      0
      • Christian EhrlicherC Online
        Christian EhrlicherC Online
        Christian Ehrlicher
        Lifetime Qt Champion
        wrote on last edited by
        #4

        I don't think so - please show us your modified code including the definition of the model variable.

        Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
        Visit the Qt Academy at https://academy.qt.io/catalog

        1 Reply Last reply
        0
        • J Offline
          J Offline
          jss193
          wrote on last edited by
          #5

          Here is the file.h

          class TeamDialog :QDialog
          {
          public:
              TeamDialog(const QStringList &leaders, QWidget *parent);
              void insert();
              void del();
              QStringList leaders() const;
          private:
              QStringListModel *model;
              QListView *listView;
          
          };
          

          and here de cpp

          
          TeamDialog::TeamDialog(const QStringList &leaders, QWidget *parent):QDialog(parent)
          {
          
             model = new QStringListModel(this);
             model->setStringList(leaders);
          
             listView = new QListView;
             listView->setModel(&model);
             listView->setEditTriggers(QAbstractItemView::AnyKeyPressed | QAbstractItemView::DoubleClicked);
             
             
          
          }
          
          void TeamDialog::insert(){
              int row = listView->currentIndex().row();
              model->insertRows(row,1);
          
              QModelIndex index = model->index(row);
              listView->setCurrentIndex(index);
              listView->edit(index);
          
          }
          
          void TeamDialog::del(){
              model->removeRows(listView->currentIndex().row(),1);
          }
          
          QStringList TeamDialog::leaders() const{
              return model->stringList();
          }
          
          Christian EhrlicherC 1 Reply Last reply
          0
          • J jss193

            Here is the file.h

            class TeamDialog :QDialog
            {
            public:
                TeamDialog(const QStringList &leaders, QWidget *parent);
                void insert();
                void del();
                QStringList leaders() const;
            private:
                QStringListModel *model;
                QListView *listView;
            
            };
            

            and here de cpp

            
            TeamDialog::TeamDialog(const QStringList &leaders, QWidget *parent):QDialog(parent)
            {
            
               model = new QStringListModel(this);
               model->setStringList(leaders);
            
               listView = new QListView;
               listView->setModel(&model);
               listView->setEditTriggers(QAbstractItemView::AnyKeyPressed | QAbstractItemView::DoubleClicked);
               
               
            
            }
            
            void TeamDialog::insert(){
                int row = listView->currentIndex().row();
                model->insertRows(row,1);
            
                QModelIndex index = model->index(row);
                listView->setCurrentIndex(index);
                listView->edit(index);
            
            }
            
            void TeamDialog::del(){
                model->removeRows(listView->currentIndex().row(),1);
            }
            
            QStringList TeamDialog::leaders() const{
                return model->stringList();
            }
            
            Christian EhrlicherC Online
            Christian EhrlicherC Online
            Christian Ehrlicher
            Lifetime Qt Champion
            wrote on last edited by
            #6

            @jss193 said in QListView issue:

            listView->setModel(&model);

            now you're passing a pointer to a pointer to a QStringListModel

            listView->setModel(model);

            Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
            Visit the Qt Academy at https://academy.qt.io/catalog

            1 Reply Last reply
            2
            • J Offline
              J Offline
              jss193
              wrote on last edited by
              #7

              I tried what you say and prompts the same issue as before “cannot initialize a parameter of type QAbstractItemModel with an lvalue of type QStringlistModel”.

              1 Reply Last reply
              0
              • Christian EhrlicherC Online
                Christian EhrlicherC Online
                Christian Ehrlicher
                Lifetime Qt Champion
                wrote on last edited by Christian Ehrlicher
                #8
                #include <QtWidgets>
                
                int main(int argc, char **argv)
                {
                    QApplication app(argc, argv);
                
                    QStringListModel *model = new QStringListModel;
                    QListView *listView = new QListView;
                    listView->setModel(model);
                }
                

                This compile fine for me - there must be something wrong with your headers - maybe forgot to include QStringListModel oder QListView header file?

                Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                Visit the Qt Academy at https://academy.qt.io/catalog

                1 Reply Last reply
                0
                • J Offline
                  J Offline
                  jss193
                  wrote on last edited by
                  #9

                  Thanks it works it prompts the same issue but compiles well, then how would I pass an object of that class to a QListviewWidget?

                  Thank you very much

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

                    Hi,

                    Do you mean you are trying to set a QStringList model on a QListWidget ? If so, you can't. The convenience views like QListWidget or QTreeWidget already have a model and it can't be changed.

                    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
                    • J Offline
                      J Offline
                      jss193
                      wrote on last edited by
                      #11

                      Thanks , then I should instantiate the class in main window through constructor method, true?

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

                        That's unrelated, if you want to use a QStringListModel, then use a QListView and you should be good to go.

                        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
                        0
                        • J Offline
                          J Offline
                          jss193
                          wrote on last edited by
                          #13

                          Thanks, thats just what I meant

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

                            Here is your code modified to work:
                            @jss193 said in QListView issue:

                            model = new QStringListModel(this);
                            model->setStringList(leaders);

                            listView = new QListView;
                            listView->setModel(model);
                            listView->setEditTriggers(QAbstractItemView::AnyKeyPressed | QAbstractItemView::DoubleClicked);

                            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