Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.

Call an AppleScript from Qt/es: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
[[Call an AppleScript from Qt|English]] | [[Call an AppleScript from Qt Russian|Русский]] | [[Call an Apple Script from Qt Italian|Italiano]] | '''Español''' | [[Call an AppleScript from Qt Albanian|Shqip]]
[[Category:QtDevelopmentSpanish::General]]<br />[[Category:HowTo]]<br />[[Category:Spanish]]
 
[[Call_an_AppleScript_from_Qt|English]]<br />| [[Call_an_AppleScript_from_Qt_Russian|Русский]]<br />| [[Call_an_Apple_Script_from_Qt_Italian |Italiano]]<br />| '''Español'''<br />| [[Call_an_AppleScript_from_Qt_Albanian|Shqip]]


Si necesitas hacer una llamada a un comando AppleScript desde dentro de Qt, este trozo de código te puede servir como inicio
Si necesitas hacer una llamada a un comando AppleScript desde dentro de Qt, este trozo de código te puede servir como inicio
<code><br />#include &lt;QApplication&amp;gt;<br />#include &lt;QProcess&amp;gt;<br />#include &lt;QDebug&amp;gt;
int main(int argc, char **argv)<br />{<br /> QApplication a(argc, argv);
QString aScript =<br /> &quot;tell application quot;System Eventsquot;&quot;<br /> &quot; activate\n&amp;quot;<br /> &quot; display dialog quot;Hello worldquot;&quot;<br /> &quot;end tell\n&amp;quot;;
QString osascript = &quot;/usr/bin/osascript&amp;quot;;<br /> QStringList processArguments;<br /> processArguments &lt;&lt; &quot;-l&amp;quot; &lt;&lt; &quot;AppleScript&amp;quot;;
QProcess p;<br /> p.start(osascript, processArguments);<br /> p.write(aScript.toUtf8());<br /> p.closeWriteChannel();<br /> p.waitForReadyRead(–1);<br /> QByteArray result = p.readAll();<br /> QString resultAsString(result); // if appropriate<br /> qDebug() &lt;&lt; &quot;the result of the script is&amp;quot; &lt;&lt; resultAsString;
return 0;<br />}<br /></code>


Este mantiene el script actual en una variable aScript. Luego crea un QProcess para invocar el comando AppleScript usando la herramienta de linea de comandos osascript.
Este mantiene el script actual en una variable aScript. Luego crea un QProcess para invocar el comando AppleScript usando la herramienta de linea de comandos osascript.
Line 16: Line 30:


En un programa en el mundo real este debe conectarse a las diferentes signals readyReadXXX() y conectar un slot a el para recolectar los datos.
En un programa en el mundo real este debe conectarse a las diferentes signals readyReadXXX() y conectar un slot a el para recolectar los datos.
Si no necesita la salida de el script, solo llama a waitForFinished() justo después de invocar la función closeWriteChannel(). El programa entonces esperara hasta que el script haya terminado, de lo contrario el flujo de control va a ir al final y terminara prematuramente la llamada al comando.
===Categories:===
* [[:Category:HowTo|HowTo]]
* [[:Category:QtDevelopmentSpanish|QtDevelopmentSpanish]]
** [[:Category:QtDevelopmentSpanish::General|General]]
* [[:Category:Spanish|Spanish]]

Revision as of 06:24, 24 February 2015



English
| Русский
| Italiano
| Español
| Shqip

Si necesitas hacer una llamada a un comando AppleScript desde dentro de Qt, este trozo de código te puede servir como inicio

<br />#include &lt;QApplication&amp;gt;<br />#include &lt;QProcess&amp;gt;<br />#include &lt;QDebug&amp;gt;

int main(int argc, char **argv)<br />{<br /> QApplication a(argc, argv);

QString aScript =<br /> &quot;tell application quot;System Eventsquot;&quot;<br /> &quot; activate\n&amp;quot;<br /> &quot; display dialog quot;Hello worldquot;&quot;<br /> &quot;end tell\n&amp;quot;;

QString osascript = &quot;/usr/bin/osascript&amp;quot;;<br /> QStringList processArguments;<br /> processArguments &lt;&lt; &quot;-l&amp;quot; &lt;&lt; &quot;AppleScript&amp;quot;;

QProcess p;<br /> p.start(osascript, processArguments);<br /> p.write(aScript.toUtf8());<br /> p.closeWriteChannel();<br /> p.waitForReadyRead(1);<br /> QByteArray result = p.readAll();<br /> QString resultAsString(result); // if appropriate<br /> qDebug() &lt;&lt; &quot;the result of the script is&amp;quot; &lt;&lt; resultAsString;

return 0;<br />}<br />

Este mantiene el script actual en una variable aScript. Luego crea un QProcess para invocar el comando AppleScript usando la herramienta de linea de comandos osascript.

Usamos el argumento -l AppleScript para llamar a osascript, esto es necesario para que no tenga que adivinar que lenguaje de script es usado.

El guión se alimenta entonces a través osascript via stdin.

El programa espera la salida de datos del script para iniciar. Debemos_Leer la salida del script para a continuación utilizar waitForReadyRead.

Si hay bytes disponibles, el programa los lee y los convierte luego a QString (si eso está bien para los datos esperados!).

If there are bytes available, the program reads them and converts them to a QString (if that is ok for the expected data!).

En un programa en el mundo real este debe conectarse a las diferentes signals readyReadXXX() y conectar un slot a el para recolectar los datos.