qt 拖拽文件到窗口 如何去掉"复制"字样
时间: 2023-11-29 09:05:39 浏览: 175
在Qt中,当你拖拽文件到窗口时,如果你想要去掉"复制"字样,可以通过设置MimeData的数据类型来实现。
在拖拽事件开始时,我们需要在mimeData()函数中创建一个QMimeData对象,并设置它的数据类型为"application/x-qabstractitemmodeldatalist"。这样做的目的是告诉Qt,我们的拖拽操作是针对一个文件列表的,而不是对单个文件的。
以下是示例代码:
```cpp
void MyWindow::dragEnterEvent(QDragEnterEvent *event)
{
if (event->mimeData()->hasUrls())
{
event->acceptProposedAction();
}
}
void MyWindow::dropEvent(QDropEvent *event)
{
const QMimeData *mimeData = event->mimeData();
if (mimeData->hasUrls())
{
QList<QUrl> urlList = mimeData->urls();
foreach (QUrl url, urlList)
{
QString filePath = url.toLocalFile();
// do something with the file path
}
}
}
```
在上面的代码中,我们重写了dragEnterEvent和dropEvent函数,以便处理拖拽事件。
在dragEnterEvent函数中,我们检查MimeData中是否包含URLs,如果包含,我们就接受该拖拽操作。
在dropEvent函数中,我们从MimeData中获取文件列表,并对每个文件进行处理。
通过这种方式,我们可以实现拖拽文件到窗口的功能,并且去掉"复制"字样。
阅读全文