有没有办法将行拖出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
甚至没有调用垂直标题项。
答案 0 :(得分:0)
是否将acceptDrops(true)添加到QTableView帮助中?