QT4编程指导Word文档格式.docx
《QT4编程指导Word文档格式.docx》由会员分享,可在线阅读,更多相关《QT4编程指导Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
cd/home/sprife/qt4/for_arm
tarxjvftslib-1.4.tar.bz2
cdtslib-1.4
vibuild.sh
#/bin/sh
exportCC=arm-linux-gcc
./autogen.sh
echo"
ac_cv_func_malloc_0_nonnull=yes"
>
arm-linux.cache
./configure--host=arm-linux--cache-file=arm-linux.cache-prefix=$PWD/../tslib1.4-install
make
makeinstall
编译:
./build.sh
2、编译QT/E库
tarxjvfqt-embedded-linux-opensource-src-4.4.0.tar.bz2
cp-atslib1.4-install/lib/*qt-embedded-linux-opensource-src-4.4.0/lib/
cp-atslib1.4-install/include/ts*qt-embedded-linux-opensource-src-4.4.0/include/
cdqt-embedded-linux-opensource-src-4.4.0
./configure-embeddedarm-xplatformqws/linux-arm-g++-depths16-little-endian-qt-mouse-linuxtp-qt-mouse-tslib-I/home/sprife/qt4/for_arm/tslib1.4-install
/include–L/home/sprife/qt4/for_arm/tslib1.4-install/lib-prefix/mnt/nfs/Trolltech/qt-embedded-4.4.0
makeinstall
-prefix选项要特殊注意,该指定目录必须要与实际NFS目录对应否则字体处会出现错误
3、测试触摸屏及QT/E程序
1、建立NFS共享目录/arm2410cl
cd/
mkdirarm2410cl
cdarm2410cl
mkdirTrolltech
cdTrolltech
mkdirqt-embedded-4.4.0
cdqt-embedded-4.4.0
cp/home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0/lib/./-arf
cp/home/sprife/qt4/for_arm/tslib1.4-install/etc/./-arf
cp/home/sprife/qt4/for_arm/tslib1.4-install/bin/./-arf
2、ARM端挂载NFS共享目录
mount-onolock,rsize=4096,wsize=4096192.168.1.111:
/arm2410cl/mnt/nfs
3、设置环境变量
cd/mnt/nfs/Trolltech/qt-embedded-4.4.0
exportQTDIR=$PWD
exportLD_LIBRARY_PATH=$PWD/lib
exportTSLIB_TSDEVICE=/dev/event0
exportTSLIB_PLUGINDIR=$PWD/lib/ts
exportTSLIB_CONSOLEDEVICE=none
exportTSLIB_CONFFILE=$PWD/etc/ts.conf
exportPOINTERCAL_FILE=$PWD/etc/ts-calib.conf
exportQWS_MOUSE_PROTO=tslib:
/dev/event0
exportTSLIB_CALIBFILE=$PWD/etc/ts-calib.conf
exportLANG=zh_CN
4、执行触摸屏校准程序(在qt-embedded-4.4.0下)
./bin/ts_calibrate
如果出现如下错误提示:
Couldntloadmodulepthres
Norawmodulesloaded.
ts_config:
Success
则更改ts.conf配置文件选择一个输入设备
vi/mnt/nfs/Trolltech/qt-embedded-4.4.0/etc/ts.conf
#Uncommentifyouwishtousethelinuxinputlayereventinterface
#module_rawinput
更改为
module_rawinput
若提示:
/dev/touchscreen/ucb1x00:
Nosuchfileordirectory
则一般是环境变量没设置好的问题,可以重新仔细检查环境变量的设置
再次执行触摸屏校准程序即可,程序会自动存储坐标校准信息以便应用程序使用。
此时如无错误则进入5点触摸屏校准程序并存储配置文件
还可以进行其他触摸屏测试程序ts_test、ts_print等
5、执行QT/E带触摸屏的例子程序
在宿主机端拷贝编译好的ARM端可执行程序
cp/home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0/examples/widgets/digitalclock/digitalclock/arm2410cl/Trolltech/qt-embedded-4.4.0/
ARM端执行该程序
./digitalclock–qws
如出现如下错误:
errorwhileloadingsharedlibraries:
libz.so.1:
cannotopensharedobjectfile:
Nosuchfileordirectory
则在宿主机端交叉编译器目录下搜索该库文件,拷贝到lib目录下(具体库文件位置可能不尽相同)
cp/opt/host/armv4l/armv4l-unknown-linux/lib/libz.so.1/arm2410cl/Trolltech/qt-embedded-4.4.0/lib/
若出现错误
libstdc++.so.6:
cannotopensharedobjectfile:
拷贝
cp/home/bc/gcc-3.4.2-glibc-2.2.5/arm-linux/arm-linux/lib/libstdc++.so.6/arm2410cl/Trolltech/qt-embedded-4.4.0/lib/
若
libgcc_s.so.1:
则
cp/home/bc/gcc-3.4.2-glibc-2.2.5/arm-linux/arm-linux/lib/libgcc_s.so.1/arm2410cl/Trolltech/qt-embedded-4.4.0/lib/
如果想让QT/E在ARM端支持USB鼠标,可以在ARM端配置环境变量
2410核心板:
exportQWS_MOUSE_PROTO=MouseMan:
/dev/input/mouse0
270核心板:
exportQWS_MOUSE_PROTO="
TPanel:
/dev/touchpanelMouseMan:
/dev/mice"
即可。
三、编写QT-X11程序
进入QTforX11目录中进行设计
[root@vm-dev~]#cd/home/sprife/qt4/for_pc/
建立实验目录
[root@vm-devfor_pc]#mkdirtestqt-x11
[root@vm-devfor_pc]#cdtestqt-x11/
[root@vm-devtestqt-x11]#
使用designer编辑程序控件
[root@vm-devtestqt-x11]#/home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/designer
将弹出designer界面
选择一个窗口布局Widget点击->
创建
拖拽几个简单的控件(TextEdit、PushBotton、TextLabel)进行界面设计
初始化控件及相关属性内容
建立信号与槽的连接
show按钮与文本编辑框的连接clicked->
clear
第二组信号与槽的连接
exit按钮与Form的连接clicked->
closed
退出界面编辑保存为UI格式testx11.ui
[root@vm-devtestqt-x11]#/home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/designer
[root@vm-devtestqt-x11]#ls
testx11.ui
编辑main.cpp函数
[root@vm-devtestqt-x11]#vimain.cpp
#include"
ui_testx11.h"
intmain(intargc,char*argv[])
{
QApplicationapp(argc,argv);
QWidget*widget=newQWidget;
Ui:
:
Formui;
ui.setupUi(widget);
widget->
show();
returnapp.exec();
}
main.cpptestx11.ui
编译程序生成工程文件.pro
[root@vm-devtestqt-x11]#/home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake-project
testqt-x11.protestx11.uimain.cpp
编译生成Makefile文件
[root@vm-devtestqt-x11]#/home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake
Makefiletestqt-x11.protestx11.uimain.cpp
编译生成可执行文件
[root@vm-devtestqt-x11]#make
/usr/local/Trolltech/Qt-x11-4.4.0/bin/uictestx11.ui-oui_testx11.h
g++-c-pipe-O2-Wall-W-D_REENTRANT-DQT_NO_DEBUG-DQT_GUI_LIB-DQT_CORE_LIB-DQT_SHARED-I/usr/local/Trolltech/Qt-x11-4.4.0/mkspecs/linux-g++-I.-I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtCore-I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtCore-I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtGui-I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtGui-I/usr/local/Trolltech/Qt-x11-4.4.0/include-I.-I.-I.-omain.omain.cpp
g++-Wl,-rpath,/usr/local/Trolltech/Qt-x11-4.4.0/lib-otestqt-x11main.o-L/usr/local/Trolltech/Qt-x11-4.4.0/lib-lQtGui-L/usr/local/Trolltech/Qt-x11-4.4.0/lib-L/usr/X11R6/lib-lpng-lSM-lICE-pthread-pthread-lXi-lXrender-lXrandr-lfreetype-lfontconfig-lXext-lX11-lQtCore-lz-lm-pthread-lgthread-2.0-lglib-2.0-lrt-ldl-lpthread
main.cppmain.oMakefiletestqt-x11testqt-x11.protestx11.uiui_testx11.h
程序编译成功了
执行编译好的程序测试下观察效果
[root@vm-devtestqt-x11]#./testqt-x11
QT编程扩展
编写自定义的信号与槽
将上个实验的目录复制出另一份并改名为testmyqt-x11
[root@vm-devfor_pc]#cd/home/sprife/qt4/for_pc/
[root@vm-devfor_pc]#cptestqt-x11testmyqt-x11–arf
[root@vm-devfor_pc]#cdtestmyqt-x11/
[root@vm-devtestmyqt-x11]#
编辑自己定义槽函数的头文件myqt.h
包含ui_testx11.h头文件,继承其控件类,定义自定义函数文件处理函数MyDlg(),并添加自定义函数槽ShowInfo()即可。
[root@vm-devtestmyqt-x11]#vimyqt.h
#ifndef__DLG_H__
#define__DLG_H__
#include<
QDialog>
ui_testx11.h>
classMyDlg:
publicQDialog
{
Q_OBJECT
public:
MyDlg();
publicslots:
voidShowInfo();
private:
};
#endif
编辑myqt.cpp文件进行函数功能实现
其中ShowInfo()函数槽中定义改变textEdit的内容为“WelcometoUP-TECH”
[root@vm-devtestmyqt-x11]#vimyqt.cpp
#include"
myqt.h"
MyDlg:
MyDlg()
ui.setupUi(this);
QObject:
connect(ui.pushButton,SIGNAL(clicked()),this,SLOT(ShowInfo()));
connect(ui.pushButton_2,SIGNAL(clicked()),this,SLOT(close()));
}
voidMyDlg:
ShowInfo()
ui.textEdit->
setHtml(QApplication:
translate("
Form"
"
<
!
DOCTYPEHTMLPUBLIC\"
-//W3C//DTDHTML4.0//EN\"
\"
http:
//www.w3.org/TR/REC-html40/strict.dtd\"
>
\n"
"
html>
head>
metaname=\"
qrichtext\"
content=\"
1\"
/>
styletype=\"
text/css\"
p,li{white-space:
pre-wrap;
}\n"
/style>
/head>
bodystyle=\"
font-family:
'
SansSerif'
;
font-size:
10pt;
font-weight:
400;
font-style:
normal;
\"
palign=\"
center\"
style=\"
margin-top:
0px;
margin-bottom:
margin-left:
margin-right:
-qt-block-indent:
0;
text-indent:
spanstyle=\"
12pt;
600;
color:
#55aaff;
WelcometoUP-TECH<
/span>
/p>
/body>
/html>
0,QApplication:
UnicodeUTF8));
重新编辑main.cpp函数
包含自定义头文件并使用自定义的类对象进行QT实现
[root@vm-devtestmyqt-x11]#vimain.cpp
QApplication>
intmain(intargc,char**argv)
MyDlg*mydlg=newMyDlg;
returnmydlg->
exec();
查看当前目录文件
[root@vm-devtestmyqt-x11]#ls
main.cppmyqt.cppmyqt.htestx11.ui
编译程序:
[root@vm-devtestmyqt-x11]#/home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake-project
[root@vm-devtestmyqt-x11]#/home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake
[root@vm-devtestmyqt-x11]#make
g++-c-pipe-O2-Wall-W-D_REENTRANT-DQT_NO_DEBUG-DQT_GUI_LIB-DQT_CORE_LIB-DQT_SHARED-I/usr/local/Trolltech/Qt-x11-4.4.0/mkspecs/linux-g++-I.-I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtCore-I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtCore-I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtGui-I/u