Controlar se pode drop sem ser pelo QDragMoveEvent



  • Pessoal estou patinando num problema aqui: numa aplicação tenho uma treeview que permite arrastar alguns ítens com drag and drop. Não é permitido dar o drop em todos as posições na treeview, e para tratar isso, controle dando ignore ou acceptProposedAction() no evento QDragMoveEvent. Isso estaria correto se sempre que mudar o ítem abaixo é porque ocorreu uma mudança do mouse. Ocorre que quando a treeview está cheia de ítens, aparece a scrollbar nela (como deve aparecer), e ao dar um drag e posicionar o mouse no topo da treeview a barra de rolagem rola para permitir dar o drop em posições acima na lista (ou abaixo). Quando essa movimentação ocorre, o mouse pode estar parado e os ítens abaixo mudando. O problema é que enquanto estou com o mouse parado esperando a scrollbar subir ou descer não é gerado eventos QDragMoveEvent, e portanto não está sendo tratado neste instante se é permitido o drop nessas posições ou não, ficando indevidamente valendo o que foi setado no último movimento do mouse (permitido ou não), e as vezes permitindo que se solte o ítem em posições proibidas (ou não permitindo soltar em posiçõesp ermitidas). Pensei em controlar outro evento, como o move da scrollbar, mas aí eu não teria mais o qdragmoveevent que eu preciso para aceitar ou não o drop.

    Alguma idéia?


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.