【问题标题】:Why does drag and drop in Qt stops working?为什么 Qt 中的拖放停止工作?
【发布时间】:2015-01-18 04:41:57
【问题描述】:

在我们在 qt 4.8.5 中构建的软件中,在某些情况下拖放会停止工作。它应该在两个地方工作。一个是将文件拖到应用程序的某个位置,另一个是在 QTreeWidget 中,您可以在其中将一些叶子放入文件夹中。

但在某些机器 (Windows) 上,这两种方法都只是停止工作或从一开始就不起作用。然后只出现一个禁止光标。重新启动应用程序后,拖放再次起作用。 windows下权限不同好像不是问题。

我不知道在哪里寻找这个问题。任何建议表示赞赏。

【问题讨论】:

  • 如果没有更多信息,就不可能为您提供帮助。你调试过代码吗?必须有(AFAIK)一些代码来处理小部件上是否接受拖动,您可能会在那里找到错误。请调试并显示代码的相关部分
  • 对于 QTreeWidget,我为此重写了 dragEnterEvent。当您开始拖动其中一片叶子时一切正常时,就会触发此操作。但是当它不工作时它不会被解雇。我还可以看到叶子和文件夹的所有标志仍然正确(叶子 = ItemIsDragEnabled,文件夹 = ItemIsDropEnabled)。如果某些东西禁用了拖放,我搜索了 setAcceptDrops(false) 的整个代码,但事实并非如此。

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


【解决方案1】:

在网上搜索了几天后,我找到了问题的原因。

https://bugreports.qt-project.org/browse/qtbug-28601

在我们的软件中,您可以通过调用 setWindowFlags 来切换模块的大小。之后不再处理拖放事件。

我可以通过调用来解决这个问题:

setAttribute( Qt::WA_AcceptDrops, false );
setAttribute( Qt::WA_AcceptDrops, true );

在需要拖放的小部件上。希望我们很快更新到 Qt 5.x。 :/

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,所以我再次重新安装了 qt,它开始正常工作,但第二天我开始遇到同样的问题,所以现在不用卸载并再次安装 qt creator,只需清理缓存和临时文件

    【讨论】:

      猜你喜欢
      • 2011-07-09
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      相关资源
      最近更新 更多