2013-04-29 10 views
5

Attualmente ho un programma che disegna linee e rettangoli.Qt mouseMoveEvent solo quando si preme il tasto sinistro del mouse

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

Io uso mouseMoveEvent disegnare anteprima temporanea di una linea e quando ho rilascio Vorrei attirare la linea attuale. Quello che mi piacerebbe sapere è come posso far funzionare mouseMoveEvent solo quando ho premuto il tasto sinistro del mouse. Ho provato quanto segue ma poi l'intera funzione smette di funzionare.

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

ma poi la funzione non fa nulla. Tutta l'assistenza sarebbe molto apprezzato

risposta

13

Dalla documentazione di QMouseEvent::button():

Si noti che il valore restituito è sempre Qt :: NoButton per il mouse mossa eventi.

Utilizzare invece buttons().

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