1、 cd /home/sprife/qt4/for_arm tar xjvf tslib-1.4.tar.bz2 cd tslib-1.4 vi build.sh #/bin/sh export CC=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 make install 编译: ./build.sh
2、2、编译QT/E库 tar xjvf qt-embedded-linux-opensource-src-4.4.0.tar.bz2 cp -a tslib1.4-install/lib/* qt-embedded-linux-opensource-src-4.4.0/lib/ cp -a tslib1.4-install/include/ts* qt-embedded-linux-opensource-src-4.4.0/include/ cd qt-embedded-linux-opensource-src-4.4.0 ./configure -embedded arm -xplatform
3、 qws/linux-arm-g+ -depths 16 -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 make install -prefix 选项要特殊注意,该指定目录必须要与实际NFS目录对应否则字体处会出现错误3、测试触摸屏及QT/E程序 1、建立N
4、FS共享目录/arm2410cl cd / mkdir arm2410cl cd arm2410cl mkdir Trolltech cd Trolltech mkdir qt-embedded-4.4.0 cd qt-embedded-4.4.0 cp /home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0/l ib/ ./ -arf cp /home/sprife/qt4/for_arm/tslib1.4-install/etc/ ./ -arf cp /home/sprife/qt4/for_arm/tslib1.4
5、-install/bin/ ./ -arf 2、ARM端挂载NFS共享目录 mount -o nolock,rsize=4096,wsize=4096 192.168.1.111:/arm2410cl /mnt/nfs 3、设置环境变量 cd /mnt/nfs/Trolltech/qt-embedded-4.4.0 export QTDIR=$PWD export LD_LIBRARY_PATH=$PWD/lib export TSLIB_TSDEVICE=/dev/event0 export TSLIB_PLUGINDIR=$PWD/lib/ts export TSLIB_CONSOLEDE
6、VICE=none export TSLIB_CONFFILE=$PWD/etc/ts.conf export POINTERCAL_FILE=$PWD/etc/ts-calib.conf export QWS_MOUSE_PROTO=tslib:/dev/event0 export TSLIB_CALIBFILE=$PWD/etc/ts-calib.conf export LANG=zh_CN 4、执行触摸屏校准程序(在qt-embedded-4.4.0下) ./bin/ts_calibrate 如果出现如下错误提示: Couldnt load module pthres No raw mo
7、dules loaded. ts_config: Success 则更改ts.conf配置文件选择一个输入设备 vi /mnt/nfs/Trolltech/qt-embedded-4.4.0/etc/ts.conf # Uncomment if you wish to use the linux input layer event interface # module_raw input 更改为 module_raw input 若提示: /dev/touchscreen/ucb1x00: No such file or directory 则一般是环境变量没设置好的问题,可以重新仔细检查环境
8、变量的设置 再次执行触摸屏校准程序即可,程序会自动存储坐标校准信息以便应用程序 使用。 此时如无错误则进入5点触摸屏校准程序并存储配置文件 还可以进行其他触摸屏测试程序ts_test、ts_print等 5、执行QT/E带触摸屏的例子程序 在宿主机端拷贝编译好的ARM端可执行程序 cp /home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0/e xamples/widgets/digitalclock/digitalclock /arm2410cl/Trolltech/qt-embedded-4.4.0/ ARM端执行该程
9、序 ./digitalclock qws 如出现如下错误: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory 则在宿主机端交叉编译器目录下搜索该库文件,拷贝到lib目录下(具体库 文件位置可能不尽相同) cp /opt/host/armv4l/armv4l-unknown-linux/lib/libz.so.1 /arm2410cl/Trolltech/qt-embedded-4.4.0/lib/ 若出现错误 libstdc+.so
10、.6: cannot open shared object file: 拷贝 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.s o.1 /arm2410cl/Trolltech/qt-embedded-4.4.0/lib/ 如果想让QT/E
11、在ARM端支持USB鼠标,可以在ARM端配置环境变量2410核心板: export QWS_MOUSE_PROTO=MouseMan:/dev/input/mouse0270核心板:export QWS_MOUSE_PROTO=TPanel:/dev/touchpanel MouseMan:/dev/mice 即可。三、 编写QT-X11程序进入QT for X11 目录中进行设计rootvm-dev # cd /home/sprife/qt4/for_pc/建立实验目录rootvm-dev for_pc# mkdir testqt-x11rootvm-dev for_pc# cd testq
12、t-x11/rootvm-dev testqt-x11#使用designer编辑程序控件rootvm-dev testqt-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退出界
13、面编辑保存为UI格式 testx11.uirootvm-dev testqt-x11# /home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/designer rootvm-dev testqt-x11# lstestx11.ui编辑main.cpp函数rootvm-dev testqt-x11# vi main.cpp #include ui_testx11.h int main(int argc, char *argv) QApplication app(argc, argv); QWidget *widget = new QWid
14、get; Ui:Form ui; ui.setupUi(widget); widget-show(); return app.exec(); main.cpp testx11.ui编译程序生成工程文件.prorootvm-dev testqt-x11# /home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake -projecttestqt-x11.pro testx11.ui main.cpp编译生成Makefile文件rootvm-dev testqt-x11# /home/sprife/qt4/for_pc/qt-x11-o
15、pensource-src-4.4.0/bin/qmake Makefile testqt-x11.pro testx11.ui main.cpp编译生成可执行文件rootvm-dev testqt-x11# make/usr/local/Trolltech/Qt-x11-4.4.0/bin/uic testx11.ui -o ui_testx11.hg+ -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.
16、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. -o main.o main.cp
17、pg+ -Wl,-rpath,/usr/local/Trolltech/Qt-x11-4.4.0/lib -o testqt-x11 main.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
18、 -lgthread-2.0 -lglib-2.0 -lrt -ldl -lpthreadmain.cpp main.o Makefile testqt-x11 testqt-x11.pro testx11.ui ui_testx11.h程序编译成功了执行编译好的程序测试下观察效果rootvm-dev testqt-x11# ./testqt-x11QT编程扩展编写自定义的信号与槽将上个实验的目录复制出另一份并改名为testmyqt-x11rootvm-dev for_pc# cd /home/sprife/qt4/for_pc/rootvm-dev for_pc# cp testqt-x11
19、 testmyqt-x11 arfrootvm-dev for_pc# cd testmyqt-x11/rootvm-dev testmyqt-x11#编辑自己定义槽函数的头文件myqt.h包含ui_testx11.h头文件,继承其控件类,定义自定义函数文件处理函数MyDlg(),并添加自定义函数槽ShowInfo()即可。rootvm-dev testmyqt-x11# vi myqt.h#ifndef _DLG_H_#define _DLG_H_#include ui_testx11.hclass MyDlg : public QDialog Q_OBJECT public: MyDlg(
20、);public slots: void ShowInfo(); private:;#endif 编辑myqt.cpp文件进行函数功能实现其中ShowInfo()函数槽中定义改变textEdit的内容为“Welcome to UP-TECH”rootvm-dev testmyqt-x11# vi myqt.cpp#include myqt.hMyDlg:MyDlg() ui.setupUi(this); QObject:connect(ui.pushButton, SIGNAL(clicked(), this, SLOT(ShowInfo();connect(ui.pushButton_2,
21、SIGNAL(clicked(), this, SLOT(close();void MyDlg:ShowInfo()ui.textEdit-setHtml(QApplication:translate(Form, nhtmlheadmeta name=qrichtext content=1 /style type=text/cssp, li white-space: pre-wrap; n/style/headbody style= font-family:Sans Serif; font-size:10pt; font-weight:400; font-style:normal;p alig
22、n=center style= margin-top:0px; margin-bottom: margin-left: margin-right: -qt-block-indent:0; text-indent:span style=12pt;600; color:#55aaff;Welcome to UP-TECH/p/body/html, 0, QApplication:UnicodeUTF8);重新编辑main.cpp函数包含自定义头文件并使用自定义的类对象进行QT实现rootvm-dev testmyqt-x11# vi main.cppQApplicationint main(int
23、 argc, char *argv) MyDlg *mydlg = new MyDlg; return mydlg-exec();查看当前目录文件rootvm-dev testmyqt-x11# lsmain.cpp myqt.cpp myqt.h testx11.ui编译程序:rootvm-dev testmyqt-x11# /home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake -projectrootvm-dev testmyqt-x11# /home/sprife/qt4/for_pc/qt-x11-opensourc
24、e-src-4.4.0/bin/qmake rootvm-dev testmyqt-x11# makeg+ -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
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1