我正在QListView中进行拖放操作。为了帮助我指的是itemviews文件夹中的Qt示例拼图。现在问题在于列表视图在IconMode中。请点击以下链接打开图片: -
Dropping item in between two items
现在,如果我将项目拖动到图片中所示的两个项目的中心,则返回无效索引。现在,当我想要获得左项或右项的索引时。从Qt文档我得到的是: -
“当发生丢弃时,对应于父项的模型索引将有效,表示项目上发生了丢弃,或者它将无效,表示丢弃发生在视图中与顶部对应的某处模型的水平。
int beginRow;
if (row != -1)
beginRow = row;
我们首先检查提供的行号,看看我们是否可以使用它来将项目插入到模型中,无论父索引是否有效。
else if (parent.isValid())
beginRow = parent.row();
如果父模型索引有效,则会在项目上发生丢弃。在这个简单的列表模型中,我们找出项目的行号,并使用该值将已删除的项目插入到模型的顶层。
else
beginRow = rowCount(QModelIndex());
当视图中的其他位置出现拖放,并且行号不可用时,我们会将项目附加到模型的顶层。“
但这仅适用于listmode中的QListView。
如果我将鼠标指针放在两个项目之间,则会给出无效索引。我该怎么办呢。请帮助我。
非常感谢。