Qt Drag & Drop:添加对拖动文件到应用程序主窗口的支持
Posted
技术标签:
【中文标题】Qt Drag & Drop:添加对拖动文件到应用程序主窗口的支持【英文标题】:Qt Drag & Drop: Add support for dragging files to the application's main window 【发布时间】:2013-01-31 11:07:28 【问题描述】:许多应用程序允许用户将一个或多个文件拖到应用程序的主窗口。
如何在我自己的 Qt 应用程序中添加对此功能的支持?
【问题讨论】:
【参考方案1】:在MainWindow
类中重载dragEnterEvent()
和dropEvent()
,并在构造函数中调用setAcceptDrops()
:
MainWindow::MainWindow(QWidget *parent)
..........
setAcceptDrops(true);
void MainWindow::dragEnterEvent(QDragEnterEvent *e)
if (e->mimeData()->hasUrls())
e->acceptProposedAction();
void MainWindow::dropEvent(QDropEvent *e)
foreach (const QUrl &url, e->mimeData()->urls())
QString fileName = url.toLocalFile();
qDebug() << "Dropped file:" << fileName;
【讨论】:
不客气。我没有写代码,而是从我的源代码复制粘贴))) 请注意:我也必须重写MainWindow::dragMoveEvent()
方法,在该方法中我只是 acceptProposedAction()
'd 事件。否则它对我不起作用。
对于那些想要放入容器类型小部件(如列表视图等)的用户,您可以在他们的viewport()
上执行,而不是直接小部件本身。【参考方案2】:
首先,查看Qt Reference Documentation: Drag and Drop 了解基础知识,然后查看Drag and Drop of files on QMainWindows 了解技术内容。后者提供了一个完整的例子。
Qt还有一堆Drag and Drop examples,你可能对Drop Site感兴趣。
【讨论】:
感谢您的帮助!一定会调查的。以上是关于Qt Drag & Drop:添加对拖动文件到应用程序主窗口的支持的主要内容,如果未能解决你的问题,请参考以下文章