【发布时间】:2012-12-12 11:23:32
【问题描述】:
我使用的是 Qt 4.2。
我有一个 QMainWindow,里面有一个 QListView,它使用 QStandardItemModel 来显示我从 .desktop 文件中获得的一些项目。
现在我正在尝试在应用程序上实现放置操作,例如:当 .html 文件放置在 firefox 项目上时,我可以运行 firefox。
这就是我所做的:
-对于列表视图:
viewport()->setAcceptDrops(true);
setAcceptDrops(true);
setDragEnabled(true);
setDropIndicatorShown(true);
setDragDropMode(QListView::DragDrop);
-对于标准项目模型:
Qt::DropActions supportedDropActions() const {
return Qt::CopyAction | Qt::MoveAction;
}
Qt::ItemFlags flags(const QModelIndex &index) const {
return Qt::ItemIsSelectable | Qt::ItemIsDragEnabled |
Qt::ItemIsDropEnabled | Qt::ItemIsEnabled;
}
QStringList mimeTypes() const {
QStringList types;
types<<"text/uri-list";
return types;
}
bool dropMimeData(const QMimeData *data, Qt::DropAction action,
int row, int column, const QModelIndex &parent) {
qDebug() << "dropMimeData";
}
之后,当我将一些文件放到应用程序上时,我再也没有收到 dropMimeData 调试消息。
【问题讨论】:
标签: qt drag-and-drop qstandarditemmodel