【问题标题】:Qt + Necessitas + Android - drag and drop preventing display re-paintQt + Necessitas + Android - 拖放防止显示重绘
【发布时间】:2012-12-02 22:26:06
【问题描述】:

当前 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 版本用于构建。

有关如何解决此问题的任何说明都会非常有帮助。

【问题讨论】:

    标签: android qt drag-and-drop


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多