自定义QDropAction标签?

时间:2015-03-02 02:05:47

标签: c++ qt drag-and-drop

在我的项目中,我希望用户能够将文件拖放到我的程序中并打开它,好像他们已经浏览了#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();
}

一切都按照我的需要运作,除了掉落动作说"复制"当用户即将删除文件时。

enter image description here

我可以将QDropAction更改为“复制”,“移动”,“链接”或“忽略”,但不能打开...无论如何,我可以删除说“"复制"或者只是改变它来说"打开"

1 个答案:

答案 0 :(得分:0)

可悲的是,没有办法改变通过Qt执行拖放时出现的文本(来自拖放的发送端或接收端)。

在拖放的接收端,您仅限于接受Qt::DropAction中可能存在的event->possibleActions()值之一(然后我相信它已经过时了)操作系统以任何方式解释此操作。查看拖动输入事件的related Windows documentation我看到类似的故事:此事件唯一可能的响应是选择DROPEFFECT)。我希望有关于此的明确的Qt文档,但我还没能找到它。

因此,正如您所提到的,您可以将文字更改为“复制'”,“移动”,“'链接'”或“忽略& #39;,但仅此而已。