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.
  • 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