2011-05-09 22 views
12

Acabo de encontrar la documentación en the Qt event system y QEvent class. Me interesa el comportamiento del método QObject::event(). La documentación indica:Propagación de eventos en Qt

Esta función virtual recibe eventos en un objeto y debe devolver verdadero si el evento e fue reconocido y procesado.

¿Cuál es el comportamiento esperado cuando se devuelve false desde el método event()? ¿Qué más se intenta para manejar el evento? ¿El evento se reenvía automáticamente al objeto principal?

Nota: Sé que la fuente está disponible, y tengo una copia. Idealmente estoy buscando alguna documentación que aborde este comportamiento.

Respuesta

6

Creo que la mejor práctica es reenviar explícitamente los eventos al método de evento de clase base si no desea filtrar ese tipo de evento (por ejemplo, return QObject::event(event);) ya que la función de evento delega eventos a manejadores específicos (por ejemplo, QWidget::keyPressEvent).

QCoreApplication::notify propoga eventos basados ​​en el valor de retorno. En true, considera el evento como consumido y se detiene. De lo contrario, el evento se pasa al padre del objeto. Para obtener más información, consulte Another Look at Events.

+0

¿Qué significa "propaga eventos basados ​​en el valor de retorno"? Esto parece obvio al principio, pero ¿a qué otro lugar se propaga? Solo hay un receptor para el evento. ¿Cómo sabría qué receptor usar en su lugar? –

+0

Esta mejor práctica está bien documentada en los enlaces citados, pero no responde la pregunta. ¿Quién usa este valor de retorno? –

+0

Mire el código fuente de QCoreApplication :: notify. Utiliza el valor de retorno de QObject :: event. Los eventos se propagan al padre de un objeto si tiene uno. –

Cuestiones relacionadas