[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

pl.comp.programming

Qt 4, przenoszenie widgeta w obrebie innego widgeta.

TmP

5/31/2007 3:42:00 PM

Witam!
Mam sobie klase, ktora jest zlozona z 2 labeli u³ozonych obok siebie. Jest
to QFrame, a w niej dwa obiekty QLabel (jeden to ikonka, a drugi to tekst).
Obiekty tej klasy (nazwijmy ja Znaczek) beda umieszczane w obiekcie innej
klasy, tj w inny widgecie. I teraz potrzebuje przesuwac myszka te obiekty
(Znaczek) po tym widgecie. Gdyby Znaczek byl klasa potomna po QLabel, to
uzylbym drag and drop (dok³adnie jak to jest w przyk³adzie w dokumentacji).
Drag and Drop dla custom widgetow, to nietrywialna sprawa i wolalbym ja
uniknac. Ponad to nie wydaje mi sie, zeby trzeba tu bylo wytoczyc dziala az
tak ciezkiego kalibru jak D&D. Nie mam zamiaru przenosiæ obiektu Znaczek do
innego widgeta, tylko dowolnie go przesowac w jednym oknie.
Pomyslalem, ze zrobie to inaczej:

void OknoZeZnaczkami::mouseMoveEvent(QMouseEvent *event)
{
Znaczek * child = static_cast<Znaczek*> (childAt(event->pos()));
if (!child)
return;
child->move (event->x()-10, event->y()-10);
}


Niestety rozwiazanie to, ma to pewna wade. Dziala dobrze, dopoki rusza
kursor myszki znajduje sie w obszarze znaczka. Czesto bywa tak, ze w
momencie szybszego ruchu myszki kursor wychodzi poza obszar Znaczka i z
przeciagania nici. Szczegolnie uciazliwe jest to dla obiektow o malych
wymiarach.

Ma ktos pomysl, jak zrobic przeciaganie obiektow (w obrebie jednego okna)
bez uzycia Drag and Drop? Albo jak zrobic, zeby w momencie, w ktorym
nacisnalem lewym przyciskiem myszy na Znaczek (i go trzymam), obiekt byl
"przyklejony" do kursora.


pozdrawiam
TmP