2013-04-29 3 views
5

Ich habe derzeit ein Programm, das Linien und Rechtecke zeichnet.Qt mouseMoveEvent nur, wenn die linke Maustaste gedrückt wird

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

Ich benutze temporäre Vorschau mousemove eine Linie zu zeichnen und wenn ich i die tatsächliche Linie zeichnen lösen. Was ich gerne wissen würde ist, wie kann ich mouseMoveEvent Arbeit nur arbeiten, wenn ich die linke Maustaste gedrückt habe. Ich habe Folgendes versucht, aber dann funktioniert die ganze Funktion nicht mehr.

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

aber dann tut die Funktion nichts. Jede Hilfe wäre viel

Antwort

13

Aus der Dokumentation von QMouseEvent::button() geschätzt werden:

Beachten Sie, dass der zurückgegebene Wert immer Qt :: NoButton für Maus bewegen Ereignisse.

Sie sollten stattdessen buttons() verwenden.

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