QTableView外部拖放

时间:2015-09-02 00:28:32

标签: c++ qt drag-and-drop 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甚至没有调用垂直标题项。

1 个答案:

答案 0 :(得分:0)

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