documentacion - ¿Cómo interceptar TODAS las señales emitidas por un evento determinado en Qt?
pyqt signal emit (4)
Me imagino que podría haber bastantes de ellos dependiendo del evento, pero al mismo tiempo, creo que esta puede ser una mejor manera de depurar, y una lección interesante.
¿Por qué lo necesitaría? Estoy usando una clase personalizada basada en QWidget
, que no se expande cuando QDockWidget
un QDockWidget
basado en la misma ventana. Saber qué señales se emiten cuando este widget de muelles se está desconectando me ayudaría a elegir qué método debo sobrescribir en mi clase personalizada.
En otras palabras, no quiero verificar todas las señales posibles de la documentación, solo ver qué señales se emiten cuando realizo alguna acción en mi aplicación.
Echa un vistazo a la señal de espionaje . Obtuve una gran idea de la biblioteca de QT y espiar las señales / ranuras.
Esto no es posible con ninguna API pública.
Pero, si coloca su código en una prueba de unidad basada en QTestLib, puede ejecutar la prueba de unidad con -vs
para imprimir cada señal emitida.
No creo que esto sea posible con Qt. Usted puede
- enumera todas las señales de una clase usando el método QMetaObject :: y QMetaMethod :: methodType;
- adjunte uno de sus propios espacios a todas esas señales;
- verificar quién invocó una ranura usando QObject :: sender.
Pero estoy atrapado después de esto. No creo que, además del remitente, se pueda obtener información sobre cómo se invoca un espacio.
Es posible que desee echar un vistazo a la clase QSignalSpy . Aunque creo que debes conectar manualmente la señal que deseas espiar.