2010-02-08 17 views
5

Supongamos que tengo un widget QPushButton que está conectado a una ranura por su señal de clic(). Esta primera ranura a su vez llama a otra ranura por la palabra clave emitir. El segundo espacio toma un argumento del primer espacio y hace algo con él. Funcionó, pero por lo que entiendo del patrón de ranuras de señales, solo tiene sentido emitir una señal. ¿Es incorrecto emitir una ranura en lugar de una señal?Qt - ranuras emisoras en lugar de señales

Respuesta

8

Si observa la definición de emitir, puede ver que está vacío. emitir solo se usa para indicar que se emite una señal en esa línea. Por lo tanto, emitir una ranura no tiene sentido.

Las ranuras son funciones regulares, puede llamarlas explícitamente.

5

Sí. Una ranura es una función. Simplemente puede llamar a una ranura como cualquier otra función en C++ doSlotAction(params);. Solo las señales deben seguir la palabra clave emit.

+0

Esto transmite el significado incorrecto. emitir en realidad transmite el significado de enviar una señal y una ranura conectada que se llama de nuevo, mientras que a medida que _keyword_yeye no se hace nada, es solo para una mejor legibilidad. – drahnr

3

Solo para completar las respuestas anteriores, las señales son realmente métodos protegidos implementados por moc, el compilador de metaobjetos.

Cuestiones relacionadas