2013-04-29 4 views
5

Mam program, który rysuje linie i prostokąty.Qt mouseMoveEvent tylko po naciśnięciu lewego przycisku myszy

void mousePressEvent(QMouseEvent *event); 
void mouseReleaseEvent(QMouseEvent *event); 
void mouseMoveEvent(QMouseEvent *event); 

używam mouseMoveEvent zwrócić chwilowy podgląd linii, a kiedy zwolnić rysuję rzeczywistą linię. Chciałbym wiedzieć, jak mogę sprawić, aby praca mouseMoveEvent działała tylko wtedy, gdy wciśnięto lewy przycisk myszy. Próbowałem następujących czynności, ale następnie cała funkcja przestała działać.

void mouseMoveEvent(QMouseEvent *event) 
{ 
    if(event->button() == Qt::LeftButton) 
    { 
     //do stuff 
    } 
} 

, ale funkcja nie wykonuje żadnych czynności. Wszelkie pomoc byłaby znacznie ceniona

Odpowiedz

13

Z dokumentacji QMouseEvent::button():

Zauważ, że zwracana wartość jest zawsze Qt :: NoButton dla myszki przenieść imprez.

Zamiast tego należy użyć buttons().

if(event->buttons() & Qt::LeftButton) 
{ 
    //do stuff 
}