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. QList wrapper
QtWS25 Last Chance

QList wrapper

Scheduled Pinned Locked Moved Unsolved General and Desktop
qlist
13 Posts 5 Posters 964 Views
  • 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.
  • M mpergand

    @firen
    A template class ?

    template <class T>
    class PointerList : public QList<T*>
    {
        public:
                   PointerList() : QList<T*>() {}
                   ~PointerList()
                        {
                        qDeleteAll(this->begin(),this->end());
                        }
    
        private:
                 Q_DISABLE_COPY(PointerList)
    
    };
    
    F Offline
    F Offline
    firen
    wrote on last edited by firen
    #4

    @mpergand That was my idea as well but didn*t work. maybe I did something wrong. I will try again. :-)

    I read about Q_DISABLE_COPY. Isn`t it mainly for QObject based types?

    Christian EhrlicherC M 2 Replies Last reply
    0
    • F firen

      @mpergand That was my idea as well but didn*t work. maybe I did something wrong. I will try again. :-)

      I read about Q_DISABLE_COPY. Isn`t it mainly for QObject based types?

      Christian EhrlicherC Offline
      Christian EhrlicherC Offline
      Christian Ehrlicher
      Lifetime Qt Champion
      wrote on last edited by
      #5

      @firen said in QList wrapper:

      I read about Q_DISABLE_COPY. Isn`t it mainly for QObject based types?

      If you want to copy PointerList <T> then you have to provide a proper copy operator, the one generated by the compiler will not work, therefore Q_DISABLE_COPY.

      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
      • F firen

        @mpergand That was my idea as well but didn*t work. maybe I did something wrong. I will try again. :-)

        I read about Q_DISABLE_COPY. Isn`t it mainly for QObject based types?

        M Offline
        M Offline
        mpergand
        wrote on last edited by
        #6

        @firen said in QList wrapper:

        That was my idea as well but didn*t work. maybe I did something wrong. I will try again. :-)

        Show your code.
        You must add dynamically allocated objects to the list, it seems obvious but maybe it needs to be said.

        1 Reply Last reply
        0
        • F Offline
          F Offline
          firen
          wrote on last edited by firen
          #7

          It looks like this now:

          template <class T>
          class CPtrListWrapper:
            public QList<T*>
          {
          
            using Item = T*;
          
          public:
            CPtrListWrapper():
              QList(),
              m_bAutoDelete(false),
              m_pCurrentItem(nullptr)
            {
              
            }
             
            ~CPtrListWrapper()
            {
          
            }
          
          //I need to wrap an old Containerclass and want to replace it internally by QList and these is one of the original methods
            void insert(uint i,
              const T* d) // 
            {
              QList::insert(i, d);
            }
          

          But this gives me an error C2664 if I try:

          bas::qtw::CPtrList<QString> m_q5List;
          const QString* pString = new QString("TEST");
          
          m_q5List.insert(0, pString);
          
          

          The error is that he cannot convert "const QString *" in "QString *const &"

          jsulmJ 1 Reply Last reply
          0
          • F firen

            It looks like this now:

            template <class T>
            class CPtrListWrapper:
              public QList<T*>
            {
            
              using Item = T*;
            
            public:
              CPtrListWrapper():
                QList(),
                m_bAutoDelete(false),
                m_pCurrentItem(nullptr)
              {
                
              }
               
              ~CPtrListWrapper()
              {
            
              }
            
            //I need to wrap an old Containerclass and want to replace it internally by QList and these is one of the original methods
              void insert(uint i,
                const T* d) // 
              {
                QList::insert(i, d);
              }
            

            But this gives me an error C2664 if I try:

            bas::qtw::CPtrList<QString> m_q5List;
            const QString* pString = new QString("TEST");
            
            m_q5List.insert(0, pString);
            
            

            The error is that he cannot convert "const QString *" in "QString *const &"

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

            @firen said in QList wrapper:

            But this gives me an error C2664 if I try:

            Please post the whole error, not just its id.
            Also, show the declaration of m_q5List.

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

            F 1 Reply Last reply
            0
            • jsulmJ jsulm

              @firen said in QList wrapper:

              But this gives me an error C2664 if I try:

              Please post the whole error, not just its id.
              Also, show the declaration of m_q5List.

              F Offline
              F Offline
              firen
              wrote on last edited by
              #9

              @jsulm I have edited the post.

              Thanks! :)

              JonBJ 1 Reply Last reply
              0
              • F firen

                @jsulm I have edited the post.

                Thanks! :)

                JonBJ Offline
                JonBJ Offline
                JonB
                wrote on last edited by
                #10
                This post is deleted!
                1 Reply Last reply
                0
                • F Offline
                  F Offline
                  firen
                  wrote on last edited by firen
                  #11
                  This post is deleted!
                  1 Reply Last reply
                  0
                  • F Offline
                    F Offline
                    firen
                    wrote on last edited by
                    #12
                    This post is deleted!
                    1 Reply Last reply
                    0
                    • M Offline
                      M Offline
                      mpergand
                      wrote on last edited by
                      #13
                          PointerList<QString> plist;
                          plist.append(new QString("World"));
                          plist.insert(0,new QString("Hello"));
                      
                          for(const QString* str : plist)
                              qDebug()<<*str;
                      

                      print:
                      "Hello"
                      "World"

                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved