『壹』 Qt程序中,怎麼啟動外部的一個exe程序,並且把本程序關閉
QProcess::startDetached啟動外部程序,qApp->quit關閉當前程序
『貳』 如何通過Qt界面啟動MPI多進程並行,並將界面參數傳遞給每一個進程
MPI必須是以服務的形式運行的,不能加到自己的代碼中。 這涉及到進程間通信,但是可以採用這樣的三種形式:1,QT應用中啟動一個MPI的exe進程,將參數作為啟動參數傳遞給這個進程。2,可以在QT應用中將參數寫到一個外部文件中,MPI進程就不斷監聽這個文件。文件有內容,MPI程序就開始執行。3,QT應用MPI進程,一個作為TCP的伺服器,一個作為TCP的客戶端。用套接字進行通信。
如果你是在linux上,可以參考很多IPC機制(進程間通信機制)。
『叄』 Qt Android 怎麼啟動其他Android程序
要知道其他應用程序的具體包名以及你要啟動的界面名稱,例如com.example.usbupdateminipcr", "com.example.usbupdateminipcr.MainActivity
『肆』 如何在QT下執行shell或外部程序
1、設計gui圖形界面,創建一button,並在clicked下添加代碼
第一種方法(50行)是調用linux C函數庫中的system(const char *string);
第二種方法(51行)和第三種方法(53 54行)是調QT里的函數;
需要說明的時,上面三種方法都是可以的,但前兩種方法會阻塞進程,直到smplayer程序結束,而第三種方法則不會阻塞進程,可以多任務運行。
還有,我們知道qt在運行的時候,要啟動qws(qtwindows server),如果用前面兩種方法,則smplayer運行的時候,要新開啟一個qws,否則不能運行;而用第三種方法,則不需要再開啟qws,它和HelloQt4共用一個qws,這樣,在一個窗口裡可以看到這兩個程序。
2、新建運行腳本,用來啟動smplayer播放器
在上一步中,qt程序執行了
/opt/run_smplayer腳本,但這個腳本是不存在的,我們要新建它,打開開發板的/opt目錄,新建一個run_smplayer文件,添加如下內容
#!/bin/sh
#測試用
#cd /opt/
#rm qt_create/
-rf
#sleep 3
#mkdir qt_create
#cd qt_create
#mkdir qt_create1
#cd qt_create1
#mkdir qt_create2
#cd qt_create2
#mkdir ok
#直接調用mplayer播放sdcard里的gq.avi文件
#cd /usr/local/smplayer/bin
#./mplayer /sdcard/gq.avi
#啟動友善的smplayer
cd /usr/local/smplayer/bin
./smplayer
3、修改smplayer文件
在友善的根文件系統中,/user/lical/smplayer/bin目錄中的smplayer腳本是有問題的,如果直接運行它,會出現滑鼠和觸摸屏
不能使用的情況,我們要將/bin目錄下的smplayer腳本復制過來,並將最後兩行中的qws去掉。(前面提到過的,我們要多任務運行,不需要再開一
個qws)
export HOME=/root
cd /usr/local/smplayer/
exe__c ./smplayer #-qws 1>/dev/null
2>/dev/null
// 此處有屏蔽字,真實沒有下劃線
#hotplug
4、修改rcS文件,使之開機就運行HelloQt4i程序
rcS文件如下:
#!
/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
#
# Trap CTRL-C &c
only in
this shell so we
can interrupt subprocesses.
#
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 none /sys
[ -e /dev/tty ]
||
/bin/mount
-t ramfs
none /dev
/bin/mount -n -t usbfs none
/proc/bus/usb
echo /sbin/mdev >
/proc/sys/kernel/hotplug
/sbin/mdev -s
/bin/hotplug
# mounting file system specified in
/etc/fstab
mkdir -p /dev/pts
mkdir -p /dev/shm
/bin/mount -n -t devpts none
/dev/pts -o mode=0622
/bin/mount -n -t tmpfs tmpfs /dev/shm
/bin/mount
-n
-t ramfs
none /tmp
/bin/mount -n -t ramfs none
/var
mkdir -p /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 "
"
>
/dev/tty1
echo "Starting networking..."
>
/dev/tty1
sleep 1
/etc/rc.d/init.d/httpd start
echo "
"
>
/dev/tty1
echo "Starting web server..."
>
/dev/tty1
sleep 1
/etc/rc.d/init.d/leds start
echo "
"
>
/dev/tty1
echo "Starting leds service..."
>
/dev/tty1
echo "
"
sleep 1
echo "
"
>
/dev/tty1
/etc/rc.d/init.d/alsaconf start
echo "Loading sound card config..."
>
/dev/tty1
echo "
"
/sbin/ifconfig lo 127.0.0.1
/etc/init.d/ifconfig-eth0
#/bin/qt4 &
#echo "
"
>
/dev/tty1
#echo "Starting Qt4 Applications, please
waiting..."
>
/dev/tty1
#/bin/smplayer &
#echo "
"
>
/dev/tty1
#echo "Starting smplayer Applications, please
waiting..."
>
/dev/tty1
/bin/hello_qt4app &
echo "
"
>
/dev/tty1
echo "Starting
hello_qt4 Applications, please
waiting..."
>
/dev/tty1
hello_qt4app腳本如下:
#!/bin/sh
rm /root/.config/
-rf;
rm /root/.mplayer/
-rf;
if [ -e /etc/friendlyarm-ts-input.conf ] ; then
. /etc/friendlyarm-ts-input.conf
fi
true
${TSLIB_TSDEVICE:=/dev/touchscreen}
TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_TSDEVICE
export TSLIB_CONFFILE
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_DISPLAY=:1
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/bin
if [ -c /dev/touchscreen ]; then
export
QWS_MOUSE_PROTO="Tslib:${TSLIB_TSDEVICE}
MouseMan:/dev/input/mice"
if [
-e
/etc/pointercal -a !
-s
/etc/pointercal ] ; then
rm
/etc/pointercal
fi
else
export
QWS_MOUSE_PROTO="MouseMan:/dev/input/mice"
>/etc/pointercal
fi
export QWS_KEYBOARD=TTY:/dev/tty1
export HOME=/root
cd /opt
./hello_qt4
-qws
1>/dev/null
2>/dev/null
hotplug
然後,重啟開發板,hello_qt4程序運行了,再點button,播放器也彈出來了。
『伍』 Qt如何打開和結束外部程序
可以查查操作系統的api,有這種api能實現運行一個新的進程運行其他程序!然後記住pid,當你想關閉的時候這個pid發送信號!那個進程收到信號以後,結束自己就可以了!
『陸』 qt調用外部exe程序並且將exe程序一起打包
你試試作為一個資源來運行看行不行,或者將exe作為一個資源,然後運行時以二進制的形式讀取,再將讀取到的二進制信息寫入到臨時文件中,運行臨時文件。或者直接將資源中得exe保存到系統臨時文件夾中進行運行。
只是個思路,沒試過,你試試
『柒』 Qt如何調用外部可執行文件
了解一下 QProcess 的文檔。
『捌』 qt中如何運行外部程序,QProcess類
QT中使用QProcess啟用外部程序 啟用外部程序,並可傳參,默認第一個參數是exe路徑!啟動外部程序的方法有以下兩種: 1、start()void QProcess::start ( const QString & program, const QStringList & arguments, OpenMode mode = ReadWrite ) Starts the program program in a new process, passing the command line arguments in arguments. The OpenMode is set to mode. QProcess will immediately enter the Starting state. If the process starts successfully,QProcess will emit started(); otherwise, error() will be emitted.Note that arguments that contain spaces are not passed to the process as separate arguments.Windows: Arguments that contain spaces are wrapped in quotes.Note: Processes are started asynchronously, which means the started() and error() signals may be delayed. Call waitForStarted() to make sure the process has started (or has failed to start) and those signals have been emitted.See also pid(), started(), and waitForStarted(). 2、使用QProcess::execute(), 不過使用此方法時程序會最阻塞直到此方法執行的程序結束後返回,這時候可使用QProcess和QThread這兩個類結合使用的方法來處理,以防止在主 線程中調用而導致阻塞的情況 先從QThread繼承一個類,重新實現run()函數: 答:1、使用QProcess::startDetached()方法,啟動外部程序後立即返回; 2、使用QProcess::execute(),不過使用此方法時程序會最阻塞直到此方法執行的程序結束後返回,這時候可使用QProcess和QThread這兩個類結合使用的方法來處理,以防止在主線程中調用而導致阻塞的情況 先從QThread繼承一個類,重新實現run()函數:Quote:class MyThread : public QThread{public:void run(); };void MyThread::run(){QProcess::execute("notepad.exe");