c++ - QTableView外部拖拽

标签 c++ qt drag-and-drop qtableview

有没有办法将行拖出 QTableView?

我知道如何通过在 View 上配置一些属性来在 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

最佳答案

将 acceptDrops(true) 添加到 QTableView 有帮助吗?

关于c++ - QTableView外部拖拽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32342897/

相关文章:

c# - 有没有办法将字符串拖到控制台应用程序上?

c++ - 代码块 C++ 错误

c++ - 即使从未使用过,递减 std::vector::begin 是否未定义?

c++ - c++ 中的自定义(非异常)错误处理策略

qt - Qt 的样式表性能命中

qt - 用鼠标移动物体

swift - 当您从 Finder 拖放文件到应用程序时如何获取文件名

javascript - 只掉落到可见的元素

c++ - 读取文本文件导致缓冲区末尾出现无效字符

c++ - 在 debian64 中编译 Qt 5 失败