Qt4.2を使用しています。
.desktopファイルから取得したいくつかのアイテムを表示するためにQStandardItemModelを使用するQListViewを備えたQMainWindowがあります。
今、私はアプリにドロップアクションを実装しようとしています。たとえば、.htmlファイルがfirefoxアイテムにドロップされたときにfirefoxを実行できます。
だからこれは私がやったことです:
-listViewの場合:
viewport()->setAcceptDrops(true);
setAcceptDrops(true);
setDragEnabled(true);
setDropIndicatorShown(true);
setDragDropMode(QListView::DragDrop);
-standardItemModelの場合:
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デバッグメッセージが表示されません。