-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathremotefilecontainer.cpp
More file actions
50 lines (45 loc) · 1.57 KB
/
Copy pathremotefilecontainer.cpp
File metadata and controls
50 lines (45 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "remotefilecontainer.h"
#include<QDebug>
#include<QMimeData>
#include<QMenu>
RemoteFileContainer::RemoteFileContainer(QWidget *parent) :
FileContainer(parent)
{
}
void RemoteFileContainer::dropEvent(QDropEvent *event){
auto data=event->mimeData();
QListWidget* source=qobject_cast<QListWidget*>(event->source());
if(source && source!=this){
qDebug()<<"item data:"<<data->text();
emit dragIn(data->text());
}
}
void RemoteFileContainer::contextMenuEvent(QContextMenuEvent *event){
QMenu *menu = new QMenu(this);
auto item=itemAt(event->pos());
if(item){
if(item->data(5)=="file"){
auto renameAction=new QAction(tr("&Rename"), menu);
menu->addAction(renameAction);
connect(renameAction,&QAction::triggered,this,[this,item]{
qDebug()<<"rename "+item->data(0).toString();
emit renameFile(item->data(0).toString());
});
}
else if(item->data(5)=="dir"){
auto deleteAction=new QAction(tr("&Delete"), menu);
menu->addAction(deleteAction);
connect(deleteAction,&QAction::triggered,this,[this,item]{
emit removeDir(item->data(0).toString());
});
}
}else{
auto makeDirAction=new QAction(tr("&New Directory"),menu);
menu->addAction(makeDirAction);
connect(makeDirAction,&QAction::triggered,this,[this]{
emit makeDir();
});
}
menu->move(cursor().pos()); //让菜单显示的位置在鼠标的坐标上
menu->show();
}