Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Unsolved How to create a QList<QGraphicsItem>

    General and Desktop
    4
    5
    100
    Loading More Posts
    • 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.
    • F
      frnklu20 last edited by

      It would help me a lot if i could do tis, but it gives me an error if i try to

      1 Reply Last reply Reply Quote 0
      • SGaist
        SGaist Lifetime Qt Champion last edited by

        Hi,

        What are you doing ?
        What errors do you get ?

        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 Reply Quote 1
        • F
          frnklu20 last edited by

          hi,

          QList<QGraphicsItem> list;
          

          in the code it doesn't show any error, but in the compiler it says
          "ivalid abstract return type 'QGraphicsItem'"

          1 Reply Last reply Reply Quote 0
          • mrjj
            mrjj Lifetime Qt Champion last edited by mrjj

            Hi
            Should that not be
            QList<QGraphicsItem *>
            so its a list of pointers to QGraphicsItem's
            also the scene has such list already. (just in case)
            https://doc.qt.io/qt-5/qgraphicsscene.html#items

            1 Reply Last reply Reply Quote 6
            • S
              spobit last edited by spobit

              QList will call follow code to create object:

              template <typename T>
              Q_INLINE_TEMPLATE void QList<T>::node_construct(Node *n, const T &t)
              {
                  if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) n->v = new T(t);
                  else if (QTypeInfo<T>::isComplex) new (n) T(t);
              #if (defined(__GNUC__) || defined(__INTEL_COMPILER) || defined(__IBMCPP__)) && !defined(__OPTIMIZE__)
                  // This violates pointer aliasing rules, but it is known to be safe (and silent)
                  // in unoptimized GCC builds (-fno-strict-aliasing). The other compilers which
                  // set the same define are assumed to be safe.
                  else *reinterpret_cast<T*>(n) = t;
              #else
                  // This is always safe, but penaltizes unoptimized builds a lot.
                  else ::memcpy(n, static_cast<const void *>(&t), sizeof(T));
              #endif
              }
              

              But QGraphicsItem is a abstract class, See, boundingRect(), paint(), that causes compilation to failed.

              1 Reply Last reply Reply Quote 2
              • First post
                Last post