在我的项目中,我希望用户能够将文件拖放到我的程序中并打开它,好像他们已经浏览了#34;为文件。
这是我的代码:
void MainWindow::dragEnterEvent(QDragEnterEvent *event)
{
if (event->mimeData()->hasUrls())
{
if(event->mimeData()->urls().size() == 1)
{
QFileInfo inputFile = event->mimeData()->urls().at(0).toLocalFile();
if(inputFile.suffix() == "dat")
{
event->acceptProposedAction();
}
}
}
}
void MainWindow::dropEvent(QDropEvent* event)
{
inputPath = event->mimeData()->urls().at(0).toLocalFile();
on_actionOpen_Savegame_triggered();
}
一切都按照我的需要运作,除了掉落动作说"复制"当用户即将删除文件时。
我可以将QDropAction更改为“复制”,“移动”,“链接”或“忽略”,但不能打开...无论如何,我可以删除说“"复制"或者只是改变它来说"打开"
答案 0 :(得分:0)
可悲的是,没有办法改变通过Qt执行拖放时出现的文本(来自拖放的发送端或接收端)。
在拖放的接收端,您仅限于接受Qt::DropAction
中可能存在的event->possibleActions()
值之一(然后我相信它已经过时了)操作系统以任何方式解释此操作。查看拖动输入事件的related Windows documentation我看到类似的故事:此事件唯一可能的响应是选择DROPEFFECT
)。我希望有关于此的明确的Qt文档,但我还没能找到它。
因此,正如您所提到的,您可以将文字更改为“复制'”,“移动”,“'链接'”或“忽略& #39;,但仅此而已。