资源预览内容
第1页 / 共68页
第2页 / 共68页
第3页 / 共68页
第4页 / 共68页
第5页 / 共68页
第6页 / 共68页
第7页 / 共68页
第8页 / 共68页
第9页 / 共68页
第10页 / 共68页
亲,该文档总共68页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
www.chinaEDA.cn嵌入式用户图形界面编程课程目的n了解嵌入式图形系统n掌握QT/E开发环境、关键技术n通过实例熟悉基于Qt/E的嵌入式 GUI设计www.chinaEDA.cn1、嵌入式图形系统简介1.1 Linux图形系统的发展史linux本身没有图形界面, linux现 在的图形界面的实现只是linux下的应 用程序实现的。 www.chinaEDA.cn1、嵌入式图形系统简介1.1 Linux图形系统的发展史 图形界面并不是linux 的一部分, linux只是一个基于命令行的操作系统 linux和Xfree的关系就相当于当年的 DOS和 WINDOWS3.0一样,windows3.0不 是独立的操作系统,它只是 DOS的扩充 ,是DOS下的应用程序级别的系统,不 是独立的操作系统,同样XFree只是 linux下的一个应用程序 而已,不是系 统的一部分。 www.chinaEDA.cn1、嵌入式图形系统简介1.1 Linux图形系统的发展史但是X的存在可以方便用户使用电脑。 WINDOWS95及以后的版本就不一样了,他们的 图形界面是操作系统的一部分,图形界面在 系统内核中就实现了,没有了图形界面 windows就不成为windows了,但linux却不一 样,没有图形界面linux还是 linux,很多装 linux的 WEB服务器就根本不装X服务器。这 也是WINDOWS和linu区别之一。 www.chinaEDA.cn1、嵌入式图形系统简介1.1 Linux图形系统的发展史 X Window:业界标准 Open Look:来自SUN与AT echo yes ) |./configure -platform linux- generic-g+ -qconfig qpe -depths 16,24,32 make -C srcwww.chinaEDA.cn4,QTE开发环境搭建4.4 QPE编译 tar xfvz qtopia-free- 1.7.0.tar.gz mv qtopia-free-1.7.0 qtopia cd qtopia/src ./configure -platform linux- generic-g+ makewww.chinaEDA.cn4,QTE开发环境搭建4.5 运行www.chinaEDA.cn当在PC上模拟Qtopia的运行时,需要用到对 应Qt版本的库文件,因此需要修改 /etc/ld.so.conf 文件以适应刚刚安装的 Qt(Redhat安装时带有Qt库,但不适合我们最新 安装的版本),修改后的ld.so.conf文件内容如 下: /sbc2410/x86-qtopia/qt/lib /sbc2410/x86-qtopia/qtopia/lib /usr/kerberos/lib /usr/X11R6/lib /usr/lib/sane 修改完此文档后,为了让刚刚安装的库生效 ,必须运行ldconfig。 至此Qt的开发缓建已经 建立。www.chinaEDA.cn(1)设置环境变量 export QTDIR=$PWD/qt export QPEDIR=$PWD/qtopia export TMAKEDIR=$PWD/tmake export TMAKEPATH=$TMAKEDIR/lib/qws/linux- generic-g+ export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH (2)启动虚拟帧缓存“$ qvfb int value() const return val; void setValue( int ); private: int val;www.chinaEDA.cn信号与插槽一个小的Qt类如下: class Foo : public QObject Q_OBJECT public: Foo(); int value() const return val; public slots: void setValue( int ); signals: void valueChanged( int ); private: int val; www.chinaEDA.cn信号与插槽槽可以由应用程序的编写者来实现。这里 是Foo:setValue()的一个可能的实现: void Foo:setValue( int v ) if ( v != val ) val = v; emit valueChanged(v); www.chinaEDA.cn信号与插槽把两个对象连接在一起的一种方法: Foo a, b; connect( a.setValue( 79 ); / a = 79 b = 79 b.setValue( 11 ); / a = undefined b = 11 b.value(); www.chinaEDA.cn信号与插槽5.2 元对象编译器(MOC)l作用 MOC是用来专门处理QT对C+的扩展部 分l用法www.chinaEDA.cn6,实例一一、代码编辑 二、程序编译www.chinaEDA.cn#include #include int main(int argc, char * argv) QApplication a(argc, argv);QPushButton hellobtn(“Hello world!“, 0);hellobtn.resize(100, 20);a.setMainWidget(hellobtn.show();return a.exec(); www.chinaEDA.cn#include #include int main(int argc, char * argv) QApplication a(argc, argv);QPushButton hellobtn(“Hello world!“, 0);hellobtn.resize(100, 20);a.setMainWidget(hellobtn.show();return a.exec(); www.chinaEDA.cn#include #include int main(int argc, char * argv) QApplication a(argc, argv);QPushButton hellobtn(“Hello world!“, 0);hellobtn.resize(100, 20);a.setMainWidget(hellobtn.show();return a.exec(); www.chinaEDA.cn#include #include int main(int argc, char * argv) QApplication a(argc, argv);QPushButton hellobtn(“Hello world!“, 0);hellobtn.resize(100, 20);a.setMainWidget(hellobtn.show();return a.exec(); www.chinaEDA.cn#include #include int main(int argc, char * argv) QApplication a(argc, argv);QPushButton hellobtn(“Hello world!“, 0);hellobtn.resize(100, 20);a.setMainWidget(hellobtn.show();return a.exec(); www.chinaEDA.cn#include #include int main(int argc, char * argv) QApplication a(argc, argv);QPushButton hellobtn(“Hello world!“, 0);hellobtn.resize(100, 20);a.setMainWidget(hellobtn.show();return a.exec(); www.chinaEDA.cn#include #include int main(int argc, char * argv) QApplication a(argc, argv);QPushButton hellobtn(“Hello world!“, 0);hellobtn.resize(100, 20);a.setMainWidget(hellobtn.show();return a.exec(); www.chinaEDA.cn#include #include int main(int argc, char * argv) QApplication a(argc, argv);QPushButton hellobtn(“Hello world!“, 0);hellobtn.resize(100, 20);a.setMainWidget(hellobtn.show();return a.exec(); www.chinaEDA.cn#include #include int main(int argc, char * argv) QApplication a(argc, argv);QPushButton hellobtn(“Hello world!“, 0);hellobtn.resize(100, 20);a.setMainWidget(hellobtn.show();return a.exec(); www.chinaEDA.cn6,实例一二、程序编译 1,生成工程文件 Progen o test.pro 2,生成Makefile Tmake o Makefile test.pro 3, 编译 makewww.chinaEDA.cn6,实例二一、工程创建 二、界面设计 三、代码编辑 四、程序编译www.chinaEDA.cn6,实例三(信号与槽)一、工程创建 二、界面设计 三、代码编辑 四、程序编译www.chinaEDA.cn课堂回顾1、怎样将信号连接到槽? 2、能否将多个槽连接到一个信号? 3、是否能将一个信号连接到其他信 号?如果能,应该怎样操作? 4、如果编译器报告connect的参数错 误,通常会是什么错误?www.chinaEDA.cn7,QT编程模式讨论l基本模式l子类继承模式lui.h模式www.chinaEDA.cn基本模式www.chinaEDA.cn子类继承模式www.chinaEDA.cn子类继承模式子类继承模式缺点:l初学者接受困难l多写了很多代码,增加了出错的几率l类几乎翻番的增加,严重影响了编译 速度和代码大小。www.chinaEDA.cnui.h模式www.chinaEDA.cn8,向QPE中添加自己的程序Qtopia是基于Qt的一个桌面程序,往 其中安装应用程序需要一个桌面文件, 图标文件以及相应的可执行文件。 www.chinaEDA.cn8,向QPE中添加自己的程序lQpe目录介绍l步骤www.chinaEDA.cn9, Qt/Embedded开发模型嵌入式软件开发通常都采用交叉编译的方式 进行,基于Qt/Embedded和Qtopia的GUI应用开 发也采用这样的模式。先在宿主机上调试应用 程序,调试通过后,经过交叉编译移植到目标 板上。 Qt/Embedded直接写入帧缓存,在宿主机上则 是通过qvfb(virtual framebuffer)来模拟帧 缓存。qvfb是X窗口用来运行和测试Qtopia应用 程序的系统程序。qvfb使用了共享内存存储区 域(虚拟的帧缓存)来模拟帧缓存并且在一个 窗口中模拟一个
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号