Necessitas的当前ALPHA 4版本(适用于Android的Qt端口)存在拖放错误。 drop in drop工作正常,除了它阻止事件循环阻止GUI重新绘制事件。我在项目错误跟踪器中报告了这个问题。 https://bugs.kde.org/show_bug.cgi?id=304180
这可能会在下一个版本中得到解决,并且对于该端口的开发人员似乎并不是一个显而易见的因为Necessitas仍然是Beta。我想给它一个试验,因为我移植的东西需要它才能工作。
我需要一些熟悉事件循环和Qt内部的Qt guru的帮助。 我从Qt doc中知道拖放实现与平台有关,你可以阅读以下注释,
注意:在Linux和Mac OS X上,拖放操作可能需要一些时间,但此功能不会阻止事件循环。在执行操作时,仍会将其他事件传递给应用程序。在Windows上,Qt事件循环在操作期间被阻止。
查看Qt源代码,我在QDropManager
结束,这是在
的src / GUI /内核/ qdnd_XXX.cpp
此文件对X11,Win,MacOS和Symbian有不同的实现。 在Necessitas Qt中,它的X11版本用于构建。
有关如何解决此问题的任何说明都非常有用。
答案 0 :(得分:0)
您可以自己重新绘制所有必需的小部件。 例如,在dragMoveEvent中调用repaint()函数。 dragMoveEvents正在成功生成。它适用于Android。
此外,您可以尝试为QDrag对象创建特殊线程。据我所知,QThreads有自己的事件循环。但我还没试过这个。