我有一个从 QTreeView 扩展的类,它有一个从 QAbstractItemModel 扩展的数据模型,我想将一个项目拖到其中。
我的问题是,当我拖动时,我显示了拖动指示器,它显示了要放在项目上的矩形,或要在项目之间放置的线。但是,当我在数据模型中收到 dropMimeData 时,我看不到如何检索该数据。我注意到 QAbstractItemView 上有一个 dropIndicatorPosition,但它受到保护。所以我的问题是,我如何在 dropMimeData 中知道放置是在项目上、之前还是之后?
好吧,我找到了答案:
bool MyModel::dropMimeData(const QMimeData *data, Qt::DropAction action,
int row, int column, const QModelIndex &parent)
Run Code Online (Sandbox Code Playgroud)
如果 QModelIndex 有效(不是-1的parent.row()、parent.column()),那么它将作为其父级放置在该对象上,并且由我来确定将其放置在模型中的位置。
如果它无效,则行和列不是 -1,并且我有一个无效的模型索引,并且对象正在插入到该位置。
这是在 qt 文档“使用拖放与项目视图”中 - 我只看到了一般的拖/放文档。
| 归档时间: |
|
| 查看次数: |
4471 次 |
| 最近记录: |