2015-09-02 57 views
0

有没有办法将行拖出QTableView?QTableView外部拖放

我知道如何在视图上配置一些属性的内部成为QTableView中移动列:

table_view_->horizontalHeader()->setSectionsMovable(true); 
table_view_->horizontalHeader()->setDragEnabled(true); 
table_view_->horizontalHeader()->setDragDropMode(QAbstractItemView::InternalMove); 

通过对文档的QAbstractItemView::DragDropMode去,我直觉期待我的下试图让垂直头座项目的外部拖动:

table_view_->verticalHeader()->setSectionsMovable(true); 
table_view_->verticalHeader()->setDragEnabled(true); 
table_view_->verticalHeader()->setDragDropMode(QAbstractItemView::DragOnly); 

不过,我只限于内部行动。

鉴于this article我得出我自己的模型从QSqlRelationalTableModel,并且增加了Qt::ItemIsDragEnabled标志为flags功能,所有垂直头指标:

Qt::ItemFlags MyRelationalTableModel::flags(const QModelIndex &index) const 
{ 
    Qt::ItemFlags defaultFlags = QSqlRelationalTableModel::flags(index); 

    if(index.column() == -1 && index.row() > -1) { 
     qDebug() << "drag enabled."; 
     return Qt::ItemIsDragEnabled | defaultFlags; 
    } else { 
     qDebug() << "not drag enabled."; 
    } 

    return defaultFlags; 
} 

这并没有改变任何东西,考虑到调试输出,flags WASN甚至不需要垂直标题项目。

+0

我想知道为什么我会在这个问题上投票反对。如果有人认为这个问题很愚蠢,那么请指出我的愚蠢,以便我可以解决这个问题。 –

回答

0

是否将acceptDrops(true)添加到QTableView帮助中?

+0

不,因为'setAcceptDrops(bool on)'只会启用或禁用QTableView的拖放。在这一点上,我只关心允许用户将东西拖出小部件。 –

+0

试试这个,特别是他们开始拖动动作的位。 [链接](http://doc.qt.io/qt-5.5/dnd.html)。你可以在小部件上安装一个事件过滤器,你希望把这些头部放入并检查发件人? –