繁体   English   中英

在QTreeView中拖放隐藏的QStandardItemModel列

[英]Drag & Drop of hidden QStandardItemModel columns in QTreeView

在QTreeView中,我想通过拖放来复制行。 相应的拖放设置如下所示:

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

对于通过QTreeView可视化的基础QStandardItemModel的列,这可以很好地解决问题。 但是,并非所有模型的列都可视化(请参阅在QTreeView中隐藏QStandardItemModel的未来列 ):

    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可视化时,如何通过拖放到QTreeView中复制QStandardItemModel的整个行?

找到了解决方案:

必须继承/实现QAbstractModel函数:

  • 虚拟QMimeData * mimeData(const QModelIndexList&indexes)const;
  • 虚拟布尔dropMimeData(const QMimeData * p_grData,Qt :: DropAction p_grAction,int p_nRow,int p_nColumn,const QModelIndex&p_grParentIdx);
  • 虚拟QStringList mimeTypes()const;

mimeData需要对数据进行编码,而dropMimeData需要对数据进行解码,并且需要在拖动的数据中插入新的行/列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM