2015-12-09 84 views
0

在QTreeView中,我想通過拖放複製行。相應的將&路設置的樣子:在QTreeView中拖放隱藏的QStandardItemModel列

this->setDragDropMode(QAbstractItemView::DragDrop); 
this->setDropIndicatorShown(true); 

這工作得很好unsing針對由QTreeView則可視化的基本QStandardItemModel的列。但不是模型的所有列顯現(見Hide future columns of QStandardItemModel in QTreeView):

void MyViewClass::columnCountChanged(int p_nOldCount , int p_nNewCount) 
    { 
    QTreeView::columnCountChanged(p_nOldCount, p_nNewCount); 

    for (int i = MyViewClass::m_nColumnType; i < p_nNewCount; ++i) 
    { 
     setColumnHidden(i, true); 
    } 
} 

我如何通過在QTreeView則拖放一個QStandardItemModel全行復制時,並非所有的列由QTreeView則顯現?

回答

0

找到了解決方案:

人們必須繼承/實現QAbstractModel功能:

  • 虛擬QMimeData * mimeData(常量QModelIndexList &索引)常量;
  • virtual bool dropMimeData(const QMimeData * p_grData,Qt :: DropAction p_grAction,int p_nRow,int p_nColumn,const QModelIndex & p_grParentIdx);
  • virtual QStringList mimeTypes()const;

while mimeData需要對數據進行編碼,dropMimeData需要對數據進行解碼並需要插入一個新的行/列與draged數據。

相關問題