How to Use Signals and Slots/es: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
'''Español''' [[How to Use Signals and Slots|English]] [[How to Use Signals and Slots SimplifiedChinese|简体中文]]
[[Category:QtDevelopmentSpanish::General]]<br />[[Category:HowTo]]<br />[[Category:Snippets]]<br />[[Category:Tutorial]]<br />[[Category:Learning]]<br />[[Category:Spanish]]


=Cómo Usar Señales (“Signals”) y Ranuras (“Slots”)?=
[toc align_right=&quot;yes&amp;quot; depth=&quot;3&amp;quot;]


==Introducción==
'''Español''' [[How_to_Use_Signals_and_Slots|English]] [[How_to_Use_Signals_and_Slots_SimplifiedChinese|简体中文]]


Recuerdas el viejo ''call-back'' del sistema X-Window? Generalmente este no se escribe seguro y flexible. Hay muchos problemas con ellos. Qt oferta una nueva gestión de eventos del sistema – las conexiones ''signal-slot''. Imagínese un despertador. Cuando la alarma está sonando, está enviando la señal (''emitting''). Y tú estás actuando como una ranura.
= Cómo Usar Señales (&quot;Signals&amp;quot;) y Ranuras (&quot;Slots&amp;quot;)? =


La traducción de “slot” es ranura pero en realidad se refiere a una acción a tomar dependiendo de la señal que se emita. Hecha esta aclaración, proseguimos…
== Introducción ==
 
Recuerdas el viejo ''call-back'' del sistema X-Window? Generalmente este no se escribe seguro y flexible. Hay muchos problemas con ellos. Qt oferta una nueva gestión de eventos del sistema - las conexiones ''signal-slot''. Imagínese un despertador. Cuando la alarma está sonando, está enviando la señal (''emitting''). Y tú estás actuando como una ranura.
 
La traducción de &quot;slot&amp;quot; es ranura pero en realidad se refiere a una acción a tomar dependiendo de la señal que se emita. Hecha esta aclaración, proseguimos…


* Cada clase QObject puede tener tantas señales como desees.
* Cada clase QObject puede tener tantas señales como desees.
Line 13: Line 17:
* Puedes conectar una señal con otra (crear una cadena de señales).
* Puedes conectar una señal con otra (crear una cadena de señales).
* Cada una de estas señales y ranuras pueden tener conexiones ilimitadas entre si.
* Cada una de estas señales y ranuras pueden tener conexiones ilimitadas entre si.
* '''<span class="caps">ATENCIÓN</span>!''' No puedes asignar valores por defecto a los atributos de una ranura. ''ej'' <code>void miFuncion(int i = 0);</code>
* '''ATENCIÓN!''' No puedes asignar valores por defecto a los atributos de una ranura. ''ej'' &lt;code&amp;gt;void miFuncion(int i = 0);&lt;/code&amp;gt;
 
== Conección ==


==Conección==
Puedes conectar una señal a través de esta forma:<br /><code><br />QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method);<br /></code><br />Tienes que vincular ''const char * signal'' y ''const char * method'' a un SIGNAL () y SLOT() macro respectivamente.


Puedes conectar una señal a través de esta forma:<br /> Tienes que vincular ''const char * signal'' y ''const char * method'' a un <span class="caps">SIGNAL</span> y <span class="caps">SLOT</span> macro respectivamente.
Y también puedes desconectar la señal de la ranura:<br /><code><br />QObject::disconnect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method);<br /></code>


Y también puedes desconectar la señal de la ranura:<br />
== Más profundo ==


==Más profundo==
Los widgets emiten una señal cuando ocurre un evento. Por ejemplo, un botón emite una señal &quot;clicked&amp;quot; cuando este es cliqueado. Un desarrollador puede escoger conectar la señal a una ranura llamando a la función &lt;code&amp;gt;connect()&lt;/code&amp;gt; para relacionarlos entre si. El mecanismo de señales y ranuras de Qt no requiere de clases para tener conocimiento entre ellas, lo que hace mucho más fácil desarrollar alta reutilización de las mismas. Como señales y ranuras son tipeado-seguro (type-safe), si hubiera algún error, estos serían reportados como alertas y no causarían una interrupción total de la aplicación.


Los widgets emiten una señal cuando ocurre un evento. Por ejemplo, un botón emite una señal “clicked” cuando este es cliqueado. Un desarrollador puede escoger conectar la señal a una ranura llamando a la función <code>connect()</code> para relacionarlos entre si. El mecanismo de señales y ranuras de Qt no requiere de clases para tener conocimiento entre ellas, lo que hace mucho más fácil desarrollar alta reutilización de las mismas. Como señales y ranuras son tipeado-seguro (type-safe), si hubiera algún error, estos serían reportados como alertas y no causarían una interrupción total de la aplicación.
Por ejemplo, si una señal de un botón de Cerrar &lt;code&amp;gt;clicked()&lt;/code&amp;gt; esta conectada a la ranura &lt;code&amp;gt;quit()&lt;/code&amp;gt;, el click del usuario en Cerrar haría que la aplicación cerrara completamente, valga la redundancia. El código se escribiría de esta forma:


Por ejemplo, si una señal de un botón de Cerrar <code>clicked()</code> esta conectada a la ranura <code>quit()</code>, el click del usuario en Cerrar haría que la aplicación cerrara completamente, valga la redundancia. El código se escribiría de esta forma:
<code>connect(button, SIGNAL (clicked()), qApp, SLOT (quit()));<code>


Las conexiones pueden ser añadidas o eliminadas en cualquier momento durante la ejecución de una aplicación Qt, pueden ser configuradas de forma que se ejecuten cuando se emite una señal o ponerse en cola para su posterior ejecución, incluso también entre objetos en diferentes hilos.
Las conexiones pueden ser añadidas o eliminadas en cualquier momento durante la ejecución de una aplicación Qt, pueden ser configuradas de forma que se ejecuten cuando se emite una señal o ponerse en cola para su posterior ejecución, incluso también entre objetos en diferentes hilos.


El mecanismo de señales y ranuras es implementado por C++. La implementación usa el preprocesador de C++ y <code>moc</code>, el compilador Meta-Objeto incluido con Qt. La generación de código se realiza de forma automática por substitución: Qt’s-Build-System. Los desarrolladores no tienen que modificar o incluso ver el código generado.
El mecanismo de señales y ranuras es implementado por C+''. La implementación usa el preprocesador de C''+ y &lt;code&amp;gt;moc&amp;lt;/code&amp;gt;, el compilador Meta-Objeto incluido con Qt. La generación de código se realiza de forma automática por substitución: Qt's-Build-System. Los desarrolladores no tienen que modificar o incluso ver el código generado.


Además de manejar las señales y las ranuras, el compilador de Meta-Objetos de Qt apoya mecanismo de traducción, su sistema de propiedad, y su amplia información de tipado en tiempo de ejecución. También hace introspección en tiempo de ejecución de programas C++ de una manera que funciona en todas las plataformas soportadas.
Además de manejar las señales y las ranuras, el compilador de Meta-Objetos de Qt apoya mecanismo de traducción, su sistema de propiedad, y su amplia información de tipado en tiempo de ejecución. También hace introspección en tiempo de ejecución de programas C++ de una manera que funciona en todas las plataformas soportadas.


==Vea también==
== Vea también ==
 
[http://blog.csdn.net/qter_wd007/article/details/5598264 Qt中的信号与槽详解] ''[blog.csdn.net]''
 
===Categories:===
 
* [[:Category:HowTo|HowTo]]
* [[:Category:Learning|Learning]]
* [[:Category:QtDevelopmentSpanish|QtDevelopmentSpanish]]
** [[:Category:QtDevelopmentSpanish::General|General]]
* [[:Category:snippets|snippets]]
* [[:Category:Spanish|Spanish]]
* [[:Category:Tutorial|Tutorial]]

Revision as of 09:51, 24 February 2015






[toc align_right="yes&quot; depth="3&quot;]

Español English 简体中文

Cómo Usar Señales ("Signals&quot;) y Ranuras ("Slots&quot;)?

Introducción

Recuerdas el viejo call-back del sistema X-Window? Generalmente este no se escribe seguro y flexible. Hay muchos problemas con ellos. Qt oferta una nueva gestión de eventos del sistema - las conexiones signal-slot. Imagínese un despertador. Cuando la alarma está sonando, está enviando la señal (emitting). Y tú estás actuando como una ranura.

La traducción de "slot&quot; es ranura pero en realidad se refiere a una acción a tomar dependiendo de la señal que se emita. Hecha esta aclaración, proseguimos…

  • Cada clase QObject puede tener tantas señales como desees.
  • Solo puedes emitir una señal desde la clase donde esta se encuentra.
  • Puedes conectar una señal con otra (crear una cadena de señales).
  • Cada una de estas señales y ranuras pueden tener conexiones ilimitadas entre si.
  • ATENCIÓN! No puedes asignar valores por defecto a los atributos de una ranura. ej <code&gt;void miFuncion(int i = 0);</code&gt;

Conección

Puedes conectar una señal a través de esta forma:

<br />QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method);<br />


Tienes que vincular const char * signal y const char * method a un SIGNAL () y SLOT() macro respectivamente. Y también puedes desconectar la señal de la ranura:

<br />QObject::disconnect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method);<br />

Más profundo

Los widgets emiten una señal cuando ocurre un evento. Por ejemplo, un botón emite una señal "clicked&quot; cuando este es cliqueado. Un desarrollador puede escoger conectar la señal a una ranura llamando a la función <code&gt;connect()</code&gt; para relacionarlos entre si. El mecanismo de señales y ranuras de Qt no requiere de clases para tener conocimiento entre ellas, lo que hace mucho más fácil desarrollar alta reutilización de las mismas. Como señales y ranuras son tipeado-seguro (type-safe), si hubiera algún error, estos serían reportados como alertas y no causarían una interrupción total de la aplicación.

Por ejemplo, si una señal de un botón de Cerrar <code&gt;clicked()</code&gt; esta conectada a la ranura <code&gt;quit()</code&gt;, el click del usuario en Cerrar haría que la aplicación cerrara completamente, valga la redundancia. El código se escribiría de esta forma:

connect(button, SIGNAL (clicked()), qApp, SLOT (quit()));

Las conexiones pueden ser añadidas o eliminadas en cualquier momento durante la ejecución de una aplicación Qt, pueden ser configuradas de forma que se ejecuten cuando se emite una señal o ponerse en cola para su posterior ejecución, incluso también entre objetos en diferentes hilos.

El mecanismo de señales y ranuras es implementado por C+. La implementación usa el preprocesador de C+ y <code&gt;moc&lt;/code&gt;, el compilador Meta-Objeto incluido con Qt. La generación de código se realiza de forma automática por substitución: Qt's-Build-System. Los desarrolladores no tienen que modificar o incluso ver el código generado.

Además de manejar las señales y las ranuras, el compilador de Meta-Objetos de Qt apoya mecanismo de traducción, su sistema de propiedad, y su amplia información de tipado en tiempo de ejecución. También hace introspección en tiempo de ejecución de programas C++ de una manera que funciona en todas las plataformas soportadas.

Vea también