QTableView中外部拖放(QTableView external drag and drop)

2019-10-29 04:10发布

有没有办法拖行了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);

不过,我仅限于内部移动。

鉴于这篇文章我来源于我自己的模型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甚至不要求垂直头项目。

Answer 1:

是否加入acceptDrops(真)的QTableView中帮助呢?



文章来源: QTableView external drag and drop