2010-10-27 66 views
0

的選擇您好所有 我從QTreeView則繼承類,我實現簡單的(空)mousePressEvent功能
但每當我試圖做到這一點,在QTreeView則該項目的選擇是殘疾人,當我刪除這個功能一切正常工作
什麼我想在這裏失蹤?
這裏是代碼:QTreeView則mousePressEvent實施防止物品

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

找到答案在這裏: http://www.qtcentre.org/threads/34915-Drag-and-drop-QTreeWidgetItem-to-QTableWidget – user63898 2010-10-27 15:29:09

回答

7

這是因爲,當你覆蓋的方法,原來上不再叫。您必須在您創建的方法中手動調用QPressreeView的mousePressEvent方法。

這裏是如何做到這一點:

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

希望這有助於。

+0

嗨是的,我這樣做,但現在它擋住了拖放事件 再次當我刪除這種方法,D&D和工作.. – user63898 2010-10-27 14:23:31

+0

你確認你的方法是完全一樣我上面寫或你有什麼添加?如果是,那是什麼? – Live 2010-10-27 14:33:38

+0

是的,它是在問題中看到的代碼,現在我發現了這個問題,它是在這段代碼中: Qt :: DropAction dropAction = drag-> exec(Qt :: MoveAction);當我評論它正在工作,但是什麼時候出現這種情況? – user63898 2010-10-27 15:03:02