我有一个 QTableView,我希望能够从应用程序外部将图像文件拖放到一行上,在发生此事件时,它需要确定它被拖放到哪一行,对文件进行操作(复制到一个目录,调整大小,添加到数据库,...),最后更新表中的一列,该项目/行现在有一个与之关联的图像文件。
我发现我可以继承自例如QTableView,重新实现 dropEvent(QDropEvent*),然后我可以在成员函数中调用 QDropEvent::pos() 来获取发生放置的 QPoint,然后调用 QTableView::indexAt(const QPoint&) 来获取 QModelIndex行/列,但后来我不知道如何通过 1) QModelIndex 和 2) QMimeData 通知模型,以便模型可以使用图像处理这些操作,并使用新数据更新自身并提供该数据到 View 。
最佳答案
bool QAbstractItemModel::dropMimeData (const QMimeData * data, Qt::DropAction action, int row, int column, const QModelIndex & parent ) [虚]通知模型的确切函数
- QModelIndex 和
- QMideData
要更新模型 - 请阅读以下内容: <罢工> http://doc.qt.nokia.com/4.7-snapshot/qabstractitemmodel.html#dropMimeData 罢工> 这个可能会有很大帮助(如果你还不熟悉的话) http://www.informit.com/articles/article.aspx?p=1405546
关于c++ - 将文件从应用程序外部拖放到 QTableView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9672629/