QT4编程指导.docx

上传人:b****5 文档编号:6187000 上传时间:2023-01-04 格式:DOCX 页数:18 大小:1.16MB
下载 相关 举报
QT4编程指导.docx_第1页
第1页 / 共18页
QT4编程指导.docx_第2页
第2页 / 共18页
QT4编程指导.docx_第3页
第3页 / 共18页
QT4编程指导.docx_第4页
第4页 / 共18页
QT4编程指导.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

QT4编程指导.docx

《QT4编程指导.docx》由会员分享,可在线阅读,更多相关《QT4编程指导.docx(18页珍藏版)》请在冰豆网上搜索。

QT4编程指导.docx

QT4编程指导

QT4编程实验指导

硬件:

博创经典2410L、PC机Pentumn500以上,硬盘80G以上。

软件:

PC机操作系统RHEL4+xshell+ARM-Linux开发环境

qt-embedded-linux-opensource-src-4.4.0.tar.bz2

tslib-1.4.tar.bz2、qt-x11-opensource-src-4.4.0.tar.gz

一、编译QT-X11环境

cd/home/sprife

mkdirqt4

cdqt4

mkdirfor_pc

mkdirfor_arm

cp/home/qt-x11-opensource-src-4.4.0.tar.gz/home/sprife/qt4/for_pc

cp/home/qt-embedded-linux-opensource-src-4.4.0.tar.bz2/home/sprife/qt4/for_arm

cp/home/tslib-1.4.tar.bz2/home/sprife/qt4/for_arm

cd/home/sprife/qt4/for_pc

tarxzvfqt-x11-opensource-src-4.4.0.tar.gz

cdqt-x11-opensource-src-4.4.0

./configure(./configure-prefix/usr/local/Trolltech/Qt-x11-4.4.0)

(yes)

gmake

gmakeinstall

二、编译QT/E环境

注:

核心板使用PXA270可略去触摸屏步骤使用USB鼠标作为输入

1、编译tslib1.4触摸屏库

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库

cd/home/sprife/qt4/for_arm

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

make

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

更改为

#Uncommentifyouwishtousethelinuxinputlayereventinterface

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/

若出现错误

errorwhileloadingsharedlibraries:

libstdc++.so.6:

cannotopensharedobjectfile:

Nosuchfileordirectory

拷贝

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/

errorwhileloadingsharedlibraries:

libgcc_s.so.1:

cannotopensharedobjectfile:

Nosuchfileordirectory

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

[root@vm-devtestqt-x11]#

编辑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();

}

[root@vm-devtestqt-x11]#ls

main.cpptestx11.ui

[root@vm-devtestqt-x11]#

编译程序生成工程文件.pro

[root@vm-devtestqt-x11]#/home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake-project

[root@vm-devtestqt-x11]#ls

testqt-x11.protestx11.uimain.cpp

编译生成Makefile文件

[root@vm-devtestqt-x11]#/home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake

[root@vm-devtestqt-x11]#ls

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

[root@vm-devtestqt-x11]#ls

main.cppmain.oMakefiletestqt-x11testqt-x11.protestx11.uiui_testx11.h

[root@vm-devtestqt-x11]#

程序编译成功了

执行编译好的程序测试下观察效果

[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

#include

classMyDlg:

publicQDialog

{

Q_OBJECT

public:

MyDlg();

publicslots:

voidShowInfo();

private:

Ui:

:

Formui;

};

#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()));

QObject:

:

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"

"\n"

"p,li{white-space:

pre-wrap;}\n"

"

'SansSerif';font-size:

10pt;font-weight:

400;font-style:

normal;\">\n"

"

0px;margin-bottom:

0px;margin-left:

0px;margin-right:

0px;-qt-block-indent:

0;text-indent:

0px;\">

12pt;font-weight:

600;color:

#55aaff;\">WelcometoUP-TECH

",0,QApplication:

:

UnicodeUTF8));

}

重新编辑main.cpp函数

包含自定义头文件并使用自定义的类对象进行QT实现

[root@vm-devtestmyqt-x11]#vimain.cpp

#include

#include"myqt.h"

intmain(intargc,char**argv)

{

QApplicationapp(argc,argv);

MyDlg*mydlg=newMyDlg;

returnmydlg->exec();

}

查看当前目录文件

[root@vm-devtestmyqt-x11]#ls

main.cppmyqt.cppmyqt.htestx11.ui

[root@vm-devtestmyqt-x11]#

编译程序:

[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

/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++-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