Red de conocimiento informático - Material del sitio web - Cómo ejecutar shell o programa externo en QT

Cómo ejecutar shell o programa externo en QT

1. Diseñe la interfaz gráfica GUI, cree botones y agregue código después de hacer clic

El primer método (línea 50) es llamar al sistema(const char *string) en la biblioteca C de Linux;

El segundo método (línea 51) y el tercer método (línea 53 54) son funciones que llaman a QT;

Cabe señalar que los tres métodos anteriores se pueden implementar, pero los dos primeros métodos. bloqueará el proceso hasta que se ejecute smplayer.

Los dos primeros métodos bloquean el proceso hasta que finaliza el programa smplayer, mientras que el tercer método no bloquea el proceso y permite realizar múltiples tareas.

Además, sabemos que cuando ejecutamos qt, necesitamos iniciar qws (servidor qtwindows), si usamos los dos primeros métodos, cuando smplayer se esté ejecutando, necesitamos abrir un nuevo qws, de lo contrario No se podrá ejecutar; cuando usemos el tercer método, no necesitamos abrir un nuevo qws, y usa un qws junto con HelloQt4 ****, para que pueda ver dos programas en una ventana al mismo tiempo.

2. Cree un nuevo script de ejecución para iniciar el reproductor smplayer

En el paso anterior, el programa qt ejecutará el script

/opt/run_smplayer, pero este script no existe, debemos crearlo, abrir el directorio /opt de la placa de desarrollo, crear un nuevo archivo run_smplayer y agregar el siguiente contenido

#! /bin/sh

#Testing

#cd /opt/

#rm qt_create/

-rf

#sleep 3

#mkdir qt_create

#cd qt_create

# mkdir qt_create1

#cd qt_create1

#mkdirqt_create2

#cd qt_create2

#mkdir ok

#Haz una llamada directa a mplayer para reproducir el archivo gq.avi.

#cd /usr/local/smplayer/bin

#./mplayer /sdcard/gq.avi

#Iniciar smplayer amigable

cd /usr/local/smplayer/bin

./smplayer

3 Modificar el archivo smplayer

En el sistema de archivos raíz amigable, /user. / Hay un problema con el script smplayer en el directorio lical/smplayer/bin. Si lo ejecutas directamente, el mouse y la pantalla táctil

no funcionarán. Debemos cambiar el directorio /bin, copiarlo. script smplayer y elimine las dos últimas líneas del archivo qws. (Como se mencionó anteriormente, realizaremos múltiples tareas, por lo que no es necesario iniciar otro

qws).

exportar HOME=/root

cd /usr/local/smplayer/

exe__c ./smplayer #-qws 1gt;/dev/null

2gt;/dev/null

// Aquí hay una palabra protectora, verdadera sin subrayar

#hotplug

4 Modificar el archivo rcS. para ejecutar el programa HelloQt4i inmediatamente después de iniciar la computadora

El archivo rcS es el siguiente:

#!

/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:

runlevel=S

prevlevel=N

umask 022

exportar RUTA nivel de ejecución prevlevel

#

# Trampa CTRL-C amp; c

solo en

este shell para que

podamos interrumpir los subprocesos.

#

trap ":" INT QUIT TSTP

/bin/hostname Crt

[ -e /proc/1 ]

||

/bin/mount -n -t proc none

/proc

[ -e / sys/class ]||

/bin/mount - n -t sysfs ninguno /sysfs ninguno

/bin/mount -n -t proc ninguno

/proc

[ -e / sys/class ]| |

/bin/mount -nt sysfs none /sys

[ -e /dev/tty ]

|

/bin /mount

-t ramfs

ninguno /dev

/ bin/mount -n -t usbfs ninguno

/proc/bus /usb

echo /sbin/mdev gt;

/proc/sys/kernel/hotplug

/sbin/mdev -s

/bin/ hotplug

# sistema de archivos de montaje especificado en

/etc/fstab

mkdir -n -t usbfs none

/proc/bus/usb

echo /sbin/mdev gt.p /dev/pts

mkdir -p /dev/shm

/bin/mount -n -t devpts ninguno

/dev/pts -o mode=0622

/bin/mount -n -t devpts ninguno

/dev/pts -o modo=0622

/bin/mount -n -t tmpfst tmpfs tmpfs /dev/shm

<

p>/bin/mount

-n

t ramfs

ninguno /tmp

/bin/mount -n -t ramfs ninguno

/var

mkdir -np /var/empty

mkdir -p /var/log

mkdir -p /var /lock

mkdir -p /var/ run

mkdir -p /var/tmp

/sbin/hwclock -s

syslogd

/etc/rc.d/init.d/netd start

echo "

"

gt;

/dev/tty1

echo "Iniciar networking..."

gt;

/dev/tty1

dormir 1

/etc/rc.d/init.d/httpd start

echo "

"

gt;

/dev/tty1

echo "Iniciar el servidor de red..."

gt;

/dev/tty1

dormir 1

/etc/rc.d/init.d/leds start

echo "

"

gt;

/dev/tty1

echo "Iniciar servicio de leds..."

gt;

/dev/tty1

echo "

"

dormir 1

echo "

"

gt;

p>

/dev/tty1

/etc/rc.d/init.d /alsaconf start

echo "Cargando configuración de tarjeta de sonido..."< / p>

gt;

/dev/tty1

echo "

"

/sbin/ifconfig lo 127.0. 0.1

/etc/init.d/ifconfig-eth0

#/bin/qt4 amp;

#echo "

"

gt;

/dev/tty1

#echo "Inicie la aplicación Qt4, por favor

espera..."

gt;

/dev/tty1

#/bin/smplayer amp;

#echo "

"

gt;

/dev/tty1

#echo "Por favor, inicia la aplicación smplayer

Espera..."

gt;

/dev/tty1

/bin/hello_qt4app amp;

echo "

"

gt;

/dev/tty1

echo "Iniciar

aplicación hello_qt4, por favor

espera..."

gt;

/dev/tty1

hola_qt4ap

p El guión es el siguiente:

#! /bin/sh

rm /root/.config/

-rf;

rm /root/.mplayer/

- rf;

si [ -e /etc/friendlyarm-ts-input.conf ] ; entonces

./etc/friendlyarm-ts-input.conf

fi

verdadero

${TSLIB_TSDEVICE:=/dev/touchscreen}

TSLIB_CONFFILE=/etc/ts.conf

exportar TSLIB_TSDEVICE

exportar TSLIB_CONFFILE

exportar TSLIB_PLUGINDIR=/usr/lib/ts

exportar TSLIB_CALIBFILE=/etc/ pointercal

exportar QWS_DISPLAY= :1

exportar LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

exportar PATH=/bin:/sbin:/usr /bin/:/usr/sbin:/usr /local/bin

if [ -c /dev/touchscreen ]; entonces

exportar

QWS_MOUSE_PROTO="Tslib:${TSLIB_TSDEVICE}

MouseMan:/dev/input/mice"

if [

-e

/etc/pointercal -a !

-s

/etc/pointercal ]; luego

rm

/etc/pointercal

fi

else

export

QWS_MOUSE_PROTO=" MouseMan:/dev/input/mice"

gt;/etc/pointercal p>

fi

exportar QWS_KEYBOARD=TTY:/dev/tty1

exportar HOME=/root

cd /opt

./hello_qt4

-qws

1gt;/dev/null

2gt;/dev/null

hotplug

Luego, reinicie la placa de circuito, se ejecuta el programa hello_qt4, luego haga clic en el botón y aparecerá el reproductor.