Monitor/Salida de señales Qt emitidas
-
21-12-2019 - |
Pregunta
Definí algunas señales que se emiten en diferentes ocasiones:
signals:
void buttonXClicked(int x);
void numButtonsChanged(int num);
Ahora sólo me gustaría ver cómo se ven estas señales y si los parámetros son correctos.Parece que existen varios enfoques para monitorear las señales.
En el correo aquí rohanpm se refiere al parámetro -vs
que se especifica más detalladamente aquí:http://qt-project.org/doc/qt-4.8/qtestlib-manual.html#qtestlib-command-line-arguments
Esta parece ser una forma elegante y rápida de obtener la información que necesito.Pero para ser honesto, no puedo entender cómo y hacia dónde tengo que correr. -vs
.no es parte de qmake
.¿Dónde más tengo que ponerlo?(Soy bastante nuevo en qt).
Relacionado a la QSignalSpy ¿Parece necesario cambiar las clases existentes?¿No existe también un enfoque "externo"?
Hay mucha documentación sobre cómo probar una ranura, pero ¿está relacionada con las señales?¿Puedo usar un printf
o cout
¿en algún lugar?
Solución
Se me ocurrió esta idea mientras leía más sobre el moc y su funcionalidad.(Al menos mientras uso NetBeans) obtengo adicional a mi archivo ButtonTest.cpp el archivo moc_ButtonTest.cpp.Dentro hay un método llamado:
// SIGNAL 0
void ButtonTest::buttonXClicked(int _t1)
{
void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
QMetaObject::activate(this, &staticMetaObject, 0, _a);
}
No podía creer que fuera tan fácil, pero acabo de agregar un
std::cout <<"buttonXClicked: "<<_t1;
y parece hacer exactamente lo que quiero.
Otros consejos
Como escribe la documentación vinculada:
Ejecuta la función de prueba toUpper con todos los datos de prueba disponibles y la función de prueba toInt con los datos de prueba llamados cero (si los datos de prueba especificados no existen, la prueba asociada fallará).
/myTestDirectory$ testMyWidget -vs -eventdelay 500
donde testMyWidget es el binario de prueba creado.Aquí va el -vs
documentación:
-vs emite cada señal que se emite
También hay más documentación si busca el resultado de ayuda:
/myTestDirectory$ testMyWidget --help | grep "\-vs"
-vs outputs every signal that gets emitted
Si tienes problemas para escribir QTestLib
pruebas unitarias basadas, este es un buen punto de partida para usted con Qt 4: