gpt4 book ai didi

c++ - 将文件拖放到 Qt5 应用程序之外

转载 作者:行者123 更新时间:2023-11-28 01:42:10 25 4
gpt4 key购买 nike

我正在尝试在我的 Qt5 应用程序中创建一个按钮,它可以被拖到应用程序之外,当被放下时,会将文件复制到该位置。

以谷歌浏览器为例。下载文件时,可以将其从显示在窗口底部的列表中拖到任何其他位置,例如目录。

是否有专门的小部件来完成此任务,还是我必须自己编写一个?如果是这样,如何?我是一名有能力的 C++ 程序员,但对 Qt 框架经验不多。

最佳答案

你试过了吗Draggable Text Example

dragwidget.cpp文件,如果您查看函数 mousePressEvent,你可以看到 QDrag 需要 mimeData

QDrag *drag = new QDrag(this);
drag->setMimeData(mimeData);

Mimedata 定义您的 QDrag 行为,例如您拖动图像、文件或文本或任何其他内容。

如果你想告诉窗口你有文件在你的拖拽中,你需要在你的 mimedata 中添加一个 URL,比如:

mimeData->setUrls(QList<QUrl>() << QUrl::fromLocalFile("D:/test.txt"));

在 draggabletext 示例中,mimedata 包含文本,您可以在 [158:161] 行看到它。

但是如果你替换现有的:

mimeData->setText(child->text());
mimeData->setData(hotSpotMimeDataKey(),
QByteArray::number(hotSpot.x()) + ' ' +
QByteArray::number(hotSpot.y()));

mimeData->setUrls(QList<QUrl>() << QUrl::fromLocalFile("D:/test.txt"));

当您在 Windows 资源管理器中拖动文本时,Windows 将接受它并将文件复制到您放置的位置。

关于c++ - 将文件拖放到 Qt5 应用程序之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46708432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com