2010-10-27 5 views
0

Bonjour à tous je classe qui a hérité de QTreeView et je mets en œuvre simple (vide) fonction mousePressEvent
Mais chaque fois que j'essaie de le faire, la sélection des éléments du QTreeView sont désactivés, quand je supprime cette fonction tout fonctionne bien
Qu'est-ce qui manque ici?
Voici le code:mise en œuvre QTreeView mousePressEvent empêche la sélection des articles

void MyTreeWidget::mousePressEvent(QMouseEvent *event) 
    { 
     QModelIndex index = this->indexAt(event->pos()); 
     QAbstractItemModel *model = this->model(); 
     QMap<int, QVariant> ItemData = model->itemData(index); 
     QMap<int, QVariant>::const_iterator i = ItemData.constBegin(); 
     while (i != ItemData.constEnd()) { 
      QString k = QString::number(i.key()); 
      QString v = i.value().toString(); 

     ++i; 
     } 
     if (event->button() == Qt::LeftButton) { 
      QByteArray itemData ; 
      QString urlTo; 
      itemData.append(urlTo); 
      QDrag *drag = new QDrag(this); 
      QMimeData *mimeData = new QMimeData; 
      mimeData->setData("application/x-dnditemdata", itemData); 
      drag->setMimeData(mimeData); 

      Qt::DropAction dropAction = drag->exec(Qt::MoveAction); 
      if (dropAction == Qt::MoveAction) 
      { 
       UT::getInstance()->LogToFile("dropAction"); 
      } 


     } 
     QTreeView::mousePressEvent(event); 
    } 
+0

trouvé la réponse ici: http://www.qtcentre.org/threads/34915-Drag-and-drop-QTreeWidgetItem-to-QTableWidget – user63898

Répondre

7

C'est parce que lorsque vous substituez une méthode, l'original sur n'est pas appelé plus. Vous devrez appeler manuellement la méthode mousePressEvent de QTreeView dans la méthode que vous avez créée.

Voici comment faire:

void YourClass::mousePressEvent (QMouseEvent * event) 
{ 
    QTreeView::mousePressEvent(event); 
} 

Hope this helps.

+0

Salut ouais je l'ai fait, mais maintenant son blocage les événements glisser-déposer encore une fois quand je supprime cette méthode, le D & D et de travail .. – user63898

+0

Confirmez-vous que votre méthode est exactement comme celle que j'ai écrit ci-dessus ou avez-vous ajouté quelque chose du tout? Si oui, qu'est ce que c'est? – Live

+0

oui c'est voir le code dans la question, maintenant j'ai trouvé le problème, et c'est dans ce code: Qt :: DropAction dropAction = drag-> exec (Qt :: MoveAction); quand je le commente, ça marche mais quand, qu'est-ce qui ne va pas? – user63898