【发布时间】:2015-11-27 08:33:03
【问题描述】:
有没有办法将行拖出 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 甚至没有为垂直标题项目调用。
【问题讨论】:
-
我想知道为什么我在这个问题上被否决了。如果有人认为这个问题很愚蠢,请指出我的愚蠢,以便我解决这个问题。
标签: c++ qt drag-and-drop qtableview