2015-12-09 61 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数据。

相关问题