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 Offline
    Christian EhrlicherC Offline
    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 Offline
        Christian EhrlicherC Offline
        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 Offline
            Christian EhrlicherC Offline
            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