qtshell腳本
① 如何在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中如何模擬shell里的echo命令
echo是bash的內建指令,你使用終端啟動的是bash這個應用程序,如果想執行唯慶這個命令,指卜握你應該創建bash進程。弊帆
③ Qt怎樣調用並傳參給shell腳本
方法/步驟 執行「nano test.sh」創建一個新的shell腳本。 腳本test.sh的內容如下: #!/bin/sh name=$1 echo "the ${name} are great man!" 給新創建的test.sh的腳本賦可執行許可權,命令為「chmod 755 test.sh」。 執行'./test.sh "xiao wang"'命令,...
④ 調用了shell腳本的Qt程序如何打包成.deb文件
大致過程:
* 在源碼目錄內創建debian化目錄 (./debian).
* 修改./debian目錄內的文件,如包維護者的詳細信息、包描述,等等;
* 在本機編譯源代碼;
* 在本機生成.deb包;
需要用到的工具:
* dh_make(dh-make包的一部分)——用於自動創建./debian目錄和其他用於創建.deb包的骨架模板文件;
* make(Gnu make)——構建過程中要用到的工具;
* debchange/dch(devscripts包的一部分)——用於編輯包的版本號;
* debuild(devscripts包的一部分)——運行構建過程,包括編譯連接,以及生成deb包;
可以參考
http://wenku..com/view/6f7e3665f5335a8102d22051.html
⑤ qtscript shell ;tinypy shell ;spidermonkey shell 這三個詞是什麼意思
qtscript是QT採用的腳本語言,遵循ECMAScript標准,即和JavaScript遵循同一銷寬標准,tinypy是python的一個子集,spidermonkey是mozilla基金會開發的瀏覽器灶棚firefox採用的JavaScript引擎,shell就是外殼的意思,就是可以輸入命令,虧辯亮然後顯示執行結果的小程序,windows下的命令行工具就相當於一個shell
⑥ linux qt怎麼編寫shell
打開QT CREATOR 點擊文件--新建文件或工程 選擇左邊的QT,右邊的QT設計師界殲前罩面類,點悔配擊選擇 選擇界面模板氏鬧 命名類名,定義路徑
⑦ 請問Qt軟體在linux系統中如何打包移植
一、准備
busybox 1.14.1
qt-embedded-linux-opensource-src-4.5.1
tslib 1.4
gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)
構建一個新的根文件系統目錄,路徑為
/root/rootfs
二、具體步驟:
1、編譯安裝busybox
在官網下載最新版。可以參考如下幾處要修改的地方:
Busybox Settings ---> Build Options ---> (arm-linux-)Cross Compiler prefix
Busybox Settings ---> Installation Options --->[]Dont't use /usr
Busybox Settings ---> Installation Options --->(/root/rootfs) BusyBox installation prefix
Busybox Settings --->Busybox Library Tuning --->[*] Fancy Shell prompts
輸入如下命令,編譯並安裝。
# make;make install
2、編譯安裝tslib
# ./autogen.sh
# ./configure -prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/ -host=arm-linux ac_cv_func_malloc_0_nonnull=yes
# make;make install
安裝目錄指明為 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/
主要是為了在編譯QTE時,不用指定tslib的頭文件和庫文件,方便以後程序開發。
注意:在做這一步前,需要做一個目錄鏈接
在/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/目錄下
# ln -s ../../usr/include ./
3、編譯安裝QTE
1)、最基本的配置
# ./configure -prefix /usr -embedded arm -xplatform qws/linux-arm-g++ -depths 16 -qt-mouse-tslib
-prefix /usr 使用這個配置,編譯後的QTE庫文件即可放在目標文件系統的/usr/lib下,而不是默認/usr/local/Trolltech/QtEmbedded-4.5.1 這個很深的目錄
2)、編譯
# make
# cp lib/* /root/rootfs/usr/lib -rd 將QTE庫文件拷貝到根文件系統的目錄
# cp plugins /root/rootfs/usr -rd 將QTE插件目錄拷貝到根文件系統的目錄
4、根文件系統的設置
1)、這時/root/rootfs/usr下應該有 bin etc include lib sbin目錄
tslib生成的etc目錄,包含一個tslib的配置文件 nf,編輯此文件,去掉mole_raw input前的注釋
# mv etc ../ 移動到rootfs的根目錄
2)、進行一次清理操作
#arm-linux-strip lib/*.so
#arm-linux-strip usr/lib/*.so
3)、編輯etc/profile,添加以下內容
export QWS_MOUSE_PROTO=Tslib:/dev/event0
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/nf
export TSLIB_PLUGINDIR=/usr/lib/ts
最後,通過mkyaffs2image 製作鏡像,燒寫鏡像,啟動ts_calibrate校驗觸屏即可。
⑧ qt中執行的shell腳本需要root許可權,怎麼辦
root方法:
1、打開手機設置--開發者選項--usb調試功能設置。
2、一鍵root這樣的Kingroot、刷機精靈等設置下手機就好了。
3、順暢的讓手機上獲取到最高的root許可權了。
通過這樣的方式就讓手機上授權獲取到手機上比較好了。
⑨ 如何利用shell 執行qt程序
#如果是在linux下面可以這樣
#設置Qt環境變數
exportQT_DIR=/opt/qt5
exportQT_LIB_DIR=$QT_DIR/lib
LD_LIBRARY_PATH=$QT_LIB_DIR/:$LD_LIBRARY_PATH
#現在可以瞎轎高運行Qt程序了,&是讓其後台運行,不佔用終端#
#相對路徑運行qt4帆謹arm的列子
./qt_demo1-qws&
#絕對路徑運磨尺行Qt程序
/opt/qt_demo&
#不後台運行
/opt/qt_demo
⑩ 在ubuntu使用Qt完成一個單擊按鈕調用shell腳本並將腳本運行結果顯示到界面中
使用qprocess.
Process = new QProcess();
connect(pppProcess, SIGNAL(readyRead()), this, SLOT(read()));
connect(pppProcess, SIGNAL(finished(int)), this, SLOT(finished()));
pppProcess->start(tr("shell cmd"));
在read函數中
str += Process->readAll();
在finished函數中顯示str