Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-3022

Assert in itemviews drag and drop

    XMLWordPrintable

Details

    Description

      Storing void * data in the itemviews asserts when used with the standard drag drop system.

      If the code in the #if 0 is enabled it works. This seems like a bug.

      #include <QtGui>

      #if 0 // have to do this to make it not assert

      QDataStream &operator<<(QDataStream &ds, const QVariant &var)
      {
      if (var.userType() == QMetaType::VoidStar)

      { ds << var.userType(); QByteArray voidPtr(sizeof(void*), 0); void *ptr = qVariantValue<void*>(var); memcpy((void*)voidPtr.data(), &ptr, sizeof(void*)); ds << voidPtr; }

      else

      { ds << int(0); var.save(ds); }

      return ds;
      }

      QDataStream &operator>>(QDataStream &ds, QVariant &var)
      {
      int type;
      ds >> type;
      if (type == 0)

      { var.load(ds); }

      else if (type == QMetaType::VoidStar)

      { QByteArray ba; ds >> ba; void *ptr; memcpy(&ptr, (void*)ba.constData(), sizeof(void*)); var = qVariantFromValue<void*>(ptr); }

      return ds;
      }
      #endif

      int main(int argc, char * argv[])
      {
      QApplication app(argc, argv);
      QWidget w;
      QHBoxLayout *l = new QHBoxLayout(&w);
      QTreeWidget *left = new QTreeWidget(&w);
      l->addWidget(left);
      left->setDragEnabled(true);
      QTreeWidget *right = new QTreeWidget(&w);
      l->addWidget(right);
      right->setAcceptDrops(true);

      QTreeWidgetItem *item = new QTreeWidgetItem();
      item->setText(0, "Item");
      item->setData(0, Qt::UserRole, qVariantFromValue((void*)0));
      left->addTopLevelItem(item);
      w.show();
      return app.exec();
      }

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            bjnilsen Bjørn Erik Nilsen
            rve Anders Bakken
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes