Qt自定义模型需要做什么才能启用drop?

标签 qt model-view-controller model qtreeview

我正在尝试启用我已连接到的自定义模型 QTreeView .

我做了以下工作:

  • 确保在 QTreeView 上启用了 acceptDrops
  • 在我的自定义模型上实现 supportedDropActionsreturn Qt::CopyAction | Qt::MoveAction
  • 在我的自定义模型上实现 mimeType s 返回 QStringList带有文本/uri 列表
  • 在我的自定义模型上实现 dropMimeData处理下降,如果它曾经发生过。

  • 这就是我让它在 QTreeWidget 上工作所需的全部内容.

    我继续:
  • 实现标志到 return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDropEnabled;

  • 尽管如此,当我运行我的应用程序并尝试将 Windows 中的文件拖到我的 QTreeView 上时,我只是得到那个不允许用斜线穿过它的捉鬼敢死队风格的圆圈。

    我还需要做什么才能启用滴剂?

    最佳答案

    终于自己弄明白了这个。

    原来问题是在 flags 函数中,在索引无效的情况下,我未能返回 ItemIsDropEnabled 标志。无效索引是根节点的信号,即没有项目的 View 区域,因此空白空间不可放置。

    这很难检测到,因为我一直在尝试使用 drop 将项目添加到我的树中,所以没有 drop 工作,这意味着我所看到的只是带有斜线的圆圈。

    关于Qt自定义模型需要做什么才能启用drop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7355510/

    相关文章:

    javascript - 主干设计查询

    c# - Unity.Mvc 与 Unity.Mvc5 的区别

    django-mptt 过滤器而不破坏树

    python - 可变数据类型的 Django 模型

    python - 在 SkLearn 中打印 Estimator 名称

    c++ - Qt线程间连接类型: why does this work?

    Qt QNetworkAccessManager 不发出信号

    c++ - 使用 QWebview 会出现编译错误,但这并不是因为 .pro 文件中缺少 Qt += webkit

    c++ - QTextDocument:获取特定页面的内容

    php - 奇怪的php方法调用