拖放
NodeGui 支持拖放功能。
为了使小部件能够接受掉落,您需要调用
widget.setAcceptDrops(true);
在此之后,您可以收听一些QEvent,例如,和DragEnterDragMoveDragLeaveDrop
完整的代码如下所示:
widget.setAcceptDrops(true);
widget.addEventListener(WidgetEventTypes.DragEnter, (e) => {
let ev = new QDragMoveEvent(e);
console.log('dragEnter', ev.proposedAction());
let mimeData = ev.mimeData();
mimeData.text(); //文本作品检查
console.log('mimeData', {
hasColor: mimeData.hasColor(),
hasHtml: mimeData.hasHtml(),
hasImage: mimeData.hasImage(),
hasText: mimeData.hasText(),
hasUrls: mimeData.hasUrls(),
html: mimeData.html(),
text: mimeData.text(),
}); //MIME数据工作检查
let urls = mimeData.urls(); //获取 QUrls
for (let url of urls) {
let str = url.toString();
console.log('url', str); //事件中的注销网址
}
ev.accept(); //丢弃事件,这对于接受进一步的事件至关重要
});
widget.addEventListener(WidgetEventTypes.DragMove, (e) => {
let ev = new QDragMoveEvent(e);
console.log('dragMove');
});
widget.addEventListener(WidgetEventTypes.DragLeave, (e) => {
console.log('dragLeave', e);
let ev = new QDragLeaveEvent(e);
ev.ignore(); //离开时忽略事件
console.log('ignored', ev);
});
widget.addEventListener(WidgetEventTypes.Drop, (e) => {
let dropEvent = new QDropEvent(e);
let mimeData = dropEvent.mimeData();
console.log('dropped', dropEvent.type());
let urls = mimeData.urls();
for (let url of urls) {
let str = url.toString();
console.log('url', str); //检查掉落数据的示例。
}
});