qt event-handling widget kde

instalar EventFilter en QWidget(qt4.4.3/kde4)



event-handling (3)

Tengo una ventana K *, y dentro de ella, un widget que necesita los eventos filtrados.

Por ejemplo, no quiero la posibilidad de hacer clic en ...

¿Cómo puedo hacer eso?

¿Debo usar eventfilters? En este caso, ¿cuál es la mejor manera?

pero mi problema es que no puedo subclasificar mi widget, porque es un widget TerminalInterface-> (), no un objeto como otros: /


Además del método de mazo de guerra establecido en la primera respuesta, existen otros dos enfoques, uno de los cuales es usar filtros de eventos.

El otro es subclasificar el widget, y luego volver a implementar, por ejemplo, los eventos * del mouse. Simplemente dejándolos vacíos evitará cualquier interacción del mouse. Asi que:

MyWidget: QSomeWidget público {Q_OBJECT public: MyWidget (QWidget * parent);

protected: void mousePressEvent (QMouseEvent *) {} .. etc ..};


QWidget tiene una propiedad enabled . Simplemente llame a widget->setEnabled(false) y esto evitará que acepte clics del mouse. También puede modificar su apariencia: por ejemplo, un QPushButton aparecerá atenuado.

Los filtros de eventos parecen excesivos para lo que quieres.


Parece que eventFilter() es lo que quieres.

Aquí está la sección de documentos de Qt que hablan al respecto: Filtros de eventos

Básicamente, debe crear una clase que herede QObject y luego implementar la función virtual eventFilter() . A continuación, llame al método installEventFilter () en el objeto que desea filtrar con el filtro como parámetro.