2016-03-19 16 views
0

Fare tıklatma olayından fare tıklama olayını nasıl ayırt edebileceğimi merak ediyorum. Çünkü bu iki olayda pyside için farklı muamele yapmak istiyorum. Şu anda, teker düğmesine bastığımda, olay mousepressevent tarafından yakalanıyor. Birisi açıklayabilir mi?Fare düğme olayından tekerlek düğmesi tıklama etkinliğini nasıl ayırt edebilirim?

Düzenleme: wheelEvent sadece kaydırma için ise ben Adından da QGLWidget sınıfına

+0

Tekerlek muhtemelen orta düğme tıklaması olarak yorumlanır? –

+0

@FrankOsterfeld Tekerlek, kaydırma değil orta düğme tıklaması olarak yorumlanır. Tekerlek orta düğmesi için bir olay işleme fonksiyonu yazdığımda, wheelEvent uygulamasında fare tıklaması, ortadaki buton tıklama etkinliğini – Johnnylin

+0

@Johnnylin alır. Tam olarak nasıl çalışması gerekiyordu. Bir fare tekerleği hem **, hem de ** üzerine kaydırma yapmak için kullanılabilir. Çoğu modern farede üç tıklama düğmesi bulunur ve çoğunun beşi vardır. [QMouseEvent] 'in (http://doc.qt.io/qt-4.8/qmouseevent.html) 'button()' ve/veya 'buttons()' yöntemlerini inceleyerek aralarında ayrım yapabilirsiniz. – ekhumoro

cevap

2

bir alt sınıfında bu uygulamak istiyorsanız, mousePressEvent fare tıklaması sorumludur. wheelEvent, tekerlek düğmesine tıklamayacak. QT'nin API'sinin, fare olaylarının işlenmesi söz konusu olduğunda nasıl tasarlandığı budur.

Hangi fare düğmesine basıldığını (sağa, sola veya sola) ayırmak için buttonproperty of QMouseEvent'u kullanın.

Bu kod

void GLWidget::mousePressEvent(QMouseEvent *event) // redefine the mouse event 
{ 
switch(event->button()) { 
case Qt::LeftButton: 
    // do stuff for left button pressed 
    break; 
case Qt::MiddleButton: 
    // do stuff for wheel button pressed 
    break; 
// ... 
} 
} 

Yani, PySide için, sadece mousePressEvent içinde event arasında button özelliğini karşılaştırmak gerekir (Ben pyside çevirmek kolaydır hayal) C++ gibi görünecektir nasıl ve Qt.LeftButton, Qt.RightButton veya Qt.MidButton olup olmadığına bakın. Umarım yardımcı olur.

+0

Teşekkürler. Tam olarak istediğim bu. Ve, olay filtresi kullanımının ne olduğunu açıklayabilir misiniz? Çünkü onları ayırmak için bir olay filtresi kullanmam gerektiğini düşündüm. – Johnnylin

+0

Bir olay filtresinin kullanımı, birden çok QObject ile uğraşırken olayları kontrol edebilmektir - bazı ana nesnenin bir çocuk içerdiğini ve çocuğun olaylarını bir ebeveyninden işlemek istediğinizi varsayalım. Bu durumda, 'childObject-> installEventFilter (parent)' etkinlik filtresini ayarladıktan sonra 'parent :: eventFilter()' 'child' olaylarını 'parent' iken işleyebilirsiniz. Daha fazla ayrıntıya ihtiyaç varsa [bu daha somut örnek] bölümüne bakın (http://www.informit.com/articles/article.aspx?p=1405544&seqNum=2). – vicrucann

İlgili konular