嵌入式用户图形界面编程

上传人:艾力 文档编号:36623847 上传时间:2018-03-31 格式:PPT 页数:68 大小:616.50KB
返回 下载 相关 举报
嵌入式用户图形界面编程_第1页
第1页 / 共68页
嵌入式用户图形界面编程_第2页
第2页 / 共68页
嵌入式用户图形界面编程_第3页
第3页 / 共68页
嵌入式用户图形界面编程_第4页
第4页 / 共68页
嵌入式用户图形界面编程_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《嵌入式用户图形界面编程》由会员分享,可在线阅读,更多相关《嵌入式用户图形界面编程(68页珍藏版)》请在金锄头文库上搜索。

1、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一样,windo

2、ws3.0不 是独立的操作系统,它只是 DOS的扩充 ,是DOS下的应用程序级别的系统,不 是独立的操作系统,同样XFree只是 linux下的一个应用程序 而已,不是系 统的一部分。 www.chinaEDA.cn1、嵌入式图形系统简介1.1 Linux图形系统的发展史但是X的存在可以方便用户使用电脑。 WINDOWS95及以后的版本就不一样了,他们的 图形界面是操作系统的一部分,图形界面在 系统内核中就实现了,没有了图形界面 windows就不成为windows了,但linux却不一 样,没有图形界面linux还是 linux,很多装 linux的 WEB服务器就根本不装X服务器。这 也是

3、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

4、 ./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/X1

5、1R6/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

6、 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信号与插槽槽可以由应用程序的编写者来

7、实现。这里 是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

8、+的扩展部 分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,

9、 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.resi

10、ze(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

11、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!“

12、, 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

13、#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 hello

14、btn(“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,实例三(信号与槽)一、工程创建 二、界面设计 三、代码编辑 四、程序编译

15、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模式ww

16、w.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使用了共享内存存储区 域(虚拟的帧缓存)来模拟帧缓存并且在一个 窗口中模拟一个

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号