簡體   English   中英

Qt + Necessitas + Android-拖放防止顯示重新繪制

[英]Qt + Necessitas + Android - drag and drop preventing display re-paint

當前的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版本用於構建。

有關如何解決此問題的任何說明將非常有幫助。

您可以自己重新粉刷所有必要的小部件。 例如,在dragMoveEvent上調用repaint()函數。 dragMoveEvents生成成功。 它適用於我在android上。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM