Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 自定义QDropAction标签?_C++_Qt_Drag And Drop - Fatal编程技术网

C++ 自定义QDropAction标签?

C++ 自定义QDropAction标签?,c++,qt,drag-and-drop,C++,Qt,Drag And Drop,在我的项目中,我希望用户能够将文件拖放到我的程序中,并将其打开,就像他们“浏览”文件一样 这是我的密码: void MainWindow::dragEnterEvent(QDragEnterEvent *event) { if (event->mimeData()->hasUrls()) { if(event->mimeData()->urls().size() == 1) { QFileInfo i

在我的项目中,我希望用户能够将文件拖放到我的程序中,并将其打开,就像他们“浏览”文件一样

这是我的密码:

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更改为复制、移动、链接或忽略,但不能打开。。。无论如何,我可以删除说“复制”的文本,或者只是将其更改为说“打开”

遗憾的是,没有办法更改通过Qt进行拖放时显示的文本(从拖放的发送端或接收端)

在拖放的接收端,您只能接受
Qt::DropAction
中出现的一个可能的
event->possibleActions()
(然后我相信这取决于操作系统以它想要的任何方式来解释这个动作。查看drag-enter事件,我看到了一个类似的故事:这个事件唯一可能的响应是选择一个
DROPEFFECT
)。我希望有关于这个的清晰的Qt文档,但我一直无法找到它

因此,正如您提到的,您可以将文本更改为“复制”、“移动”、“链接”或“忽略”,但仅此而已