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