0

当前的 ALPHA 4 版本的 Necessitas(Android 的 Qt 端口)存在拖放错误。拖放工作正常,除了它阻止事件循环阻止 GUI 获得重新绘制事件。我在项目错误跟踪器中报告了这个问题。 https://bugs.kde.org/show_bug.cgi?id=304180

这可能会在下一个版本中得到解决,并且对于端口的开发人员来说似乎并不是什么阻碍,因为 Necessitas 仍然是 Beta 版。我想试一试,因为我要移植的东西需要它才能工作。

我需要熟悉事件循环和 Qt 内部的 Qt 大师的帮助。我从 Qt 文档中知道拖放实现依赖于平台,您可以阅读以下注释,

注意:在 Linux 和 Mac OS X 上,拖放操作可能需要一些时间,但此功能不会阻塞事件循环。在执行操作时,其他事件仍会传递给应用程序。在 Windows 上,Qt 事件循环在操作期间被阻塞。

查看 Qt 源代码,我在QDropManager其中实现了

src/gui/kernel/qdnd_XXX.cpp

该文件对 X11、Win、MacOS 和 Symbian 有不同的实现。在 Necessitas Qt 中,它的 X11 版本用于构建。

有关如何解决此问题的任何指示都将非常有帮助。

4

1 回答 1

0

您可以自己重新绘制所有必要的小部件。例如在 dragMoveEvent 调用 repaint() 函数。dragMoveEvents 正在成功生成。它适用于我在android上。

此外,您可以尝试为 QDrag 对象创建特殊线程。据我所知,QThreads 有自己的事件循环。但我还没有尝试过。

于 2013-02-07T08:17:30.357 回答