| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #include "dragdroplistview.h"
- DragDropListView::DragDropListView(QWidget *parent) :
- QListView(parent)
- {
- setAcceptDrops(true);
- setViewMode(QListView::IconMode);
- //setDropIndicatorShown(true);
- //setDragDropMode(QAbstractItemView::DropOnly);
- //setDragEnabled(true);
- //this->viewport()->setAcceptDrops(true);
- //this->viewport()->installEventFilter(this);
- }
- void DragDropListView::dragEnterEvent(QDragEnterEvent *event)
- {
- if(event->mimeData()->hasFormat("text/uri-list"))
- {
- if(!getDropFiles(event->mimeData()->urls()).isEmpty())
- event->acceptProposedAction();
- }
- }
- void DragDropListView::dragMoveEvent(QDragMoveEvent *event)
- {
- if(event->mimeData()->hasFormat("text/uri-list"))
- {
- if(!getDropFiles(event->mimeData()->urls()).isEmpty())
- event->acceptProposedAction();
- }
- }
- void DragDropListView::dropEvent(QDropEvent *event)
- {
- QStringList files = getDropFiles(event->mimeData()->urls());
- if(!files.isEmpty())
- {
- emit filesDragDropped(files);
- }
- }
- void DragDropListView::resizeEvent(QResizeEvent *)
- {
- setFlow(QListView::TopToBottom);
- }
- QStringList DragDropListView::getDropFiles(QList<QUrl> urls)
- {
- QStringList files;
- for(int i=0;i<urls.size();i++)
- {
- if(urls.at(i).isLocalFile())
- {
- QFileInfo fileInfo(urls.at(i).toLocalFile());
- if(fileInfo.suffix()=="txt" && fileInfo.isFile()){
- files<<urls.at(i).toLocalFile();
- }
- }
- }
- return files;
- }
|