2012-12-02 50 views
0

Necessitas的當前ALPHA 4版本(用於Android的Qt端口)存在拖放問題。拖放功能可以正常工作,除了阻止事件循環阻止GUI重新繪製事件。我在項目錯誤跟蹤器中報告了這個問題。 https://bugs.kde.org/show_bug.cgi?id=304180Qt + Necessitas + Android - 拖放防止顯示重新着色

這可能會在下一個版本中得到解決,而且似乎並沒有成爲端口開發人員的炫耀者,因爲Necessitas仍然是Beta版本。我想給它一個試用版,因爲我正在移植的東西需要這個工作。

我需要一些熟悉事件循環和Qt內部的Qt大師的幫助。 我從Qt的文檔,該阻力知道拖放實現是與平臺相關的,你可以閱讀下面的注意事項

注:在Linux和Mac OS X,拖放操作可能需要一些時間,但這個函數不會阻塞事件循環。在執行操作時,其他事件仍會傳遞給應用程序。在Windows上,Qt事件循環在操作過程中被阻塞。

展望了Qt源裏面,我在QDropManager這是在

的src/GUI /內核中實現qdnd_XXX.cpp

端/這個文件有X11,運,MacOS的不同實施和Symbian。 在Necessitas Qt中,它的X11版本用於構建。

關於如何解決這個問題的任何方向會有很大的幫助。

回答

0

您可以只是自己重繪所有必要部件。 例如在dragMoveEvent處調用repaint()函數。 dragMoveEvents正在成功生成。它在android上適用於我。

此外,您還可以嘗試創建QDrag對象特殊螺紋。據我所知,QThreads有自己的事件循環。但我還沒有嘗試過。