Hola:
En Qt tienes las clases que capturan eventos.
Puedes usar un objeto QEvent para capturar cualquier evento, mediante casting, o directamente usar objetos específicos para el evento que quieras capturar.
Este es un ejemplo de un widget que captura el botón izquierdo y del medio del ratón, así como el movimiento de la rueda, y añade una unidad a un contador.
Igualmente lee la tecla pulsada.
Está creado desde un widget estandar:
Código C++:
Ver original#ifndef WIDGET_H
#define WIDGET_H
#include <QMouseEvent>
#include <QWheelEvent>
#include <QKeyEvent>
#include <QDebug>
#include "ui_widget.h"
class Widget : public QWidget, private Ui::Widget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
void mousePressEvent (QMouseEvent* m_evento);
void wheelEvent(QWheelEvent* w_evento);
void keyPressEvent(QKeyEvent *k_evento);
private:
int contador;
};
#endif // WIDGET_H
Código C++:
Ver original#include "widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent)
{
setupUi(this);
contador=0;
}
void Widget::mousePressEvent(QMouseEvent *m_evento)
{
if (m_evento->buttons()==Qt::LeftButton || m_evento->buttons()==Qt::MiddleButton)
{
contador++;
qDebug()<<"Numero de clicks: "<<contador;
}
}
void Widget::wheelEvent(QWheelEvent *w_evento)
{
contador++;
qDebug()<<"Numero de clicks: "<<contador;
}
void Widget::keyPressEvent(QKeyEvent *k_evento)
{
qDebug()<<k_evento->text();
}
Básicamente consiste en implementar las funciones virtuales:
Código C++:
Ver originalvoid mousePressEvent (QMouseEvent* m_evento);
void wheelEvent(QWheelEvent* w_evento);
void keyPressEvent(QKeyEvent *k_evento);
Para dotarles de la funcionalidad que estés necesitando.
P.D. Si he dicho muchas tonterías espero que eferion o jc_moj me corrijan