【问题标题】:Custom QDropAction Label?自定义 QDropAction 标签?
【发布时间】:2015-03-02 02:05:47
【问题描述】:

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

这是我的代码:

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 更改为 Copy、Move、Link 或 Ignore,但不能打开... 无论如何我可以删除“复制”的文本或将其更改为“打开”

【问题讨论】:

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


    【解决方案1】:

    遗憾的是,无法更改通过 Qt 执行拖放操作时出现的文本(从拖放的发送端或接收端)。

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

    因此,就像您提到的那样,您可以将文本更改为“复制”、“移动”、“链接”或“忽略”,仅此而已。

    【讨论】:

      猜你喜欢
      • 2012-07-13
      • 2021-12-28
      • 2011-10-15
      • 2012-07-07
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多