Qtopia 编程部分要点分析 苗忠良.

Slides:



Advertisements
Similar presentations
Java 程序分类 Java Application :是完整程序,需要独立的解 释器解释运行;以 “.java” 为后缀的文件,以 main() 方法作为程序入口,由 java 编译器编译生 成字节码,由 Java 解释器加载执行字节码。 Java Applet 没有 main() 方法作为程序入口,是嵌在.
Advertisements

第一章 Java 程序设计技术 概述  什么是 Java 语言  一个简单的 Java 程序  程序的编译和运行  常见错误  使用 Java 核心 API 文档.
程序设计语言基础 软件工程系 秦晓燕. 课程目标 了解面向对象程序设计的思想,以及软件 开发流程。 学习 Java 语言的基本概念和编程方法,基 本掌握 Java 类库的使用。 能够利用所学的方法开发简单的小型应用 程序.
Java 程序设计 案例教程 北京大学出版社 第 01 章. Java 程序设计案例教程 第 01 章 Java 语言与面向对象程序设计 Java 语言的历史 Java 语言的特点 Java 程序的分类 Java 环境配置 Eclipse 的安装 Java 程序的调试 教学目标.
面向对象与设计模式 RD 常见编程范式介绍  并行编程 - Process-orientedProcess-oriented  组件编程 - Component-basedComponent-based  事件驱动 - Service-oriented,Time-drivenService-orientedTime-driven.
Java 程序设计(第二版) 普通高等教育 “ 十一五 ” 国家级规划教材 辛运帷等 编著 徐小平 主讲.
Linux 安裝入門與基本管理 課程目標: 學習Linux平台下的安裝設定 與 建置一個基本的Linux伺服器
Foundations of Computer Science
红旗Linux认证培训 课程介绍.
Ns2 一個常用的網路模擬器 台灣科技大學資管系資料庫實驗室 洪振洲.
单片机应用技术 项目一 循环彩灯装置 第7讲 Keil软件的使用 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
Java Programming Hygiene - for DIDC
北京科技大学天津学院 信息工程系 面 向 对 象 程 序 设 计 第1讲 Java初探 主讲:于静.
设计模式可以帮助我们改善系统的设计,增强 系统的健壮性、可扩展性,为以后铺平道路。
Proteus虚拟仿真.
第 13 章 套件 (Packages).
QT编程简介 李杨 Qt系列讲座 组织:柴树杉 1. Qt编程简介 智能仿生,柴树杉 2. 创建主窗口程序 3. Qt+VTK开发三维应用
QtiPlot-實驗室數據分析與繪圖 撰文者: 1.海洋大學光電所 楊善文 2. (如對本文有貢獻者,記得在此留名)
Linux Further.
Wife Certificate Agenda Why Wi-Fi ? Install and operation chariot.
Android App 系統開發教學 Luna 陳雯琳 2014/12/18
APP課程:Android程式設計開發環境與工具介紹
C# 程式設計 第一部分 第1-4章 C# 程式設計 - 南華大學資管系.
CJLR PDM&SRM 单点登录指南 场景一:在CJLR公司网络中(CJLR办公室/由VPN拨入),使用CJLR公司电脑登录:
Linux.
第17章 使用B4J建立跨平台應用程式 17-1 認識B4J整合開發環境 17-2 下載與安裝B4J開發環境
走向C++之路 WindyWinter WindyWinter感谢诸位前来捧场。
陈 峦 副教授 研究院大楼316# 电子科技大学 能源科学与工程学院
Chapter 1 用VC++撰寫程式 Text book: Ivor Horton.
淺談Visual C# 程式設計 國立台灣師大附中 李啟龍 Jason.
Android開發環境建置與設定 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
陈炎 南京大学软件学院 Ant简介 Ant一个优秀的构建工具 Ant意思是Another Neat Tool 陈炎 南京大学软件学院
簡易 Visual Studio 2010 C++ 使用手冊
嵌入式系統架構 長高科技 顏旭偉.
第一个Android程序 本讲大纲: 1、创建Android应用程序 2、Android项目结构说明 3、运行Android应用程序
Operating System Concepts 作業系統原理 CHAPTER 2 系統結構 (System Structures)
中国散裂中子源小角谱仪 的实验数据格式与处理算法 报告人:张晟恺 中国科学院高能物理研究所 SCE 年8月18日
Special English for Industrial Robot
第二天 计算机基础技能培训 (一)linux基础知识
主流嵌入式Linux下GUI解决方案 基本概念介绍 GUI (graphical user interfaces)
Android 课程讲义 智能手机开发
创建型设计模式.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
R教學 安裝RStudio 羅琪老師.
Native Development Kit
Java基础入门 第1章 Java开发入门 · Java语言的特点 · Java开发环境的搭建 · 环境变量的配置 · Java的运行机制.
SPOTO TM JAVA课程 JAVA中的OO语法
第三章 项目设定.
嵌入式系统设计与实例开发 ——ARM与C/OS-Ⅱ 北京航空航天大学 智能嵌入式技术工作室 王田苗 魏洪兴.
簡易 Visual Studio 2005 C++ 使用手冊
認識 Java.
利用ICE通信中间件构建分布式应用程序开发框架
序及第0章.
第1章 Java语言概述 学习目标 本章要点 上机练习 习 题.
Real-Time System Software Group Lab 408 Wireless Networking and Embedded Systems Laboratory Virtualization, Parallelization, Service 實驗室主要是以系統軟體設計為主,
虚 拟 仪 器 virtual instrument
ARM Developer Suite 介 绍.
課程網站
Compute System Administration Homework 2: Shell Script
实验一:编译运行Linux内核并使用gdb进行调试
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
#include <iostream.h>
C++程序设计 概述 潘荣江 山东大学软件学院.
售后培训系列之V9系统中心安装 SecManage 网安事业部 广州售后-王长绪.
MGT 213 System Management Server的昨天,今天和明天
Session 2: Testing Windows CE .NET
Usage Eclipse 敏捷方法工具介紹 實驗室網站:
Tmux zjlin.
Section 1 Basic concepts of web page
When using opening and closing presentation slides, use the masterbrand logo at the correct size and in the right position. This slide meets both needs.
Presentation transcript:

Qtopia 编程部分要点分析 苗忠良

主要内容 常用的Linux工具 事件处理机制 虚拟缓冲机制 设计模式在Qtopia中的运用 国际化 搭建开发环境 参考文献

主要内容 常用的Linux工具 事件处理机制 虚拟缓冲机制 设计模式在Qtopia中的运用 国际化 搭建开发环境 参考文献

常用的Linux工具 压缩工具 内存泄漏检测工具 实时内存监控工具 CPU监控工具

常用的Linux工具 压缩工具 内存泄漏检测工具 实时内存监控工具 CPU监控工具

压缩工具 tar.gz用法: 压缩:tar zcvf *.tar.gz DirName 解压:tar zxvf *.tar.gz Bz2用法: 压缩:tar jcvf *.tar.bz2 DirName 解压:tar jxvf *.tar.bz2 Bz2的压缩更有效率

常用的Linux工具 压缩工具 内存泄漏检测工具 实时内存监控工具 CPU监控工具

内存泄漏检测工具 Valgrind(http://developer.kde.org/~sewardj/)是一个致力于解决所有内存问题的程序,而内存泄漏只不过是其中的问题之一而已。该工具的开发人员是Julian Seward(以Bzip2和Cacheprof而闻名)。该工具宣称自己“是专门致力于解决x86 Linux中开放源代码的内存问题”,事实上,它的确做到了自己的宣言。此外,它还可以描述CPU缓存的使用情况,不过这一功能并不常用。 除了一些常见的问题外,该工具还可以发现内存其它的一些问题,甚至一些POSIX线程方面的问题。缓冲的信息对于大部分程序来说似乎没有必要,不过它是一个查看程序性能的很好方式。

常用的Linux工具 压缩工具 内存泄漏检测工具 实时内存监控工具 CPU监控工具

实时内存监控工具-watch&&free 用法:watch -n 2 -d free watch命令会每两秒执行 free一次,执行前会清除屏幕,在同样位置显示数据。因为 watch命令不会卷动屏幕,所以适合出长时间的监测内存使用率。可以使用 -n选项,控制执行的频率;也可以利用 -d选项,让命令将每次不同的地方显示出来。Watch命令会一直执行,直到您按下 [Ctrl]-[C] 为止.

常用的Linux工具 压缩工具 内存泄漏检测工具 实时内存监控工具 CPU监控工具

CPU监控工具 Linux中常用的监控CPU整体性能的工具有: mpstat: mpstat 不但能查看所有CPU的平均信息,还能查看指定CPU的信息。 vmstat:只能查看所有CPU的平均信息;查看cpu队列信息 iostat: 只能查看所有CPU的平均信息 Sar:与mpstat 一样,不但能查看CPU的平均信息,还能查看指定CPU的信息。 top:显示的信息同ps接近,但是top可以了解到CPU消耗,可以根据用户指定的时间来更新显示 oprofile:OProfile 是一个低开销的系统全局的性能监视工具。它使用处理器上的性能监视硬件来检索关于内核以及系统上的可执行文件的信息,例如内存是何时被引用的;L2 缓存请求数量;收到的硬件中断数量等

主要内容 常用的Linux工具 事件处理机制 虚拟缓冲机制 设计模式在Qtopia中的运用 国际化 搭建开发环境 参考文献

事件处理机制 在Qt中,events即对象,当一个事件发生时,Qt通过构造一个适当的QEvent子类来创建一个事件对象来表述事件,并将它通过调用特定对象的实例的event()函数将事件传递给它。所以向一个对象传递事件的时候,经过的第一个函数就是event()。 event()函数并不处理事件,根据event的类型,它调用相应的event handler来进行处理。 当需要对传递给特定对象的事件进行特定处理时,就需要对该对象安装eventFilter,在事件被传递给event()前,对事件进行处理。 当对象需要创建或调用事件时,可以利用sendEvent()和postEvent(),前者会立即发送事件,后者会将事件添加到事件队列中,当主事件循环再次运行时,派发出去。

主要内容 常用的Linux工具 事件处理机制 虚拟缓冲机制 设计模式在Qtopia中的运用 国际化 搭建开发环境 参考文献

虚拟缓冲机制 Qtopia Core applications write directly to the framebuffer, eliminating the need for the X Window System and saving memory. For development and debugging purposes, Qtopia Core provides a virtual framebuffer allowing Qtopia Core programs to be developed on a desktop machine, without switching between consoles and X11. The virtual framebuffer emulates a framebuffer using a shared memory region and the qvfb tool to display the framebuffer in a window. The qvfb tool also supports a feature known as a skin which can be used to change the look and feel of the display. The tool is located in Qt's /tools/qvfb directory, and provides several additional features accessible through its File and View menus. Please note that the virtual framebuffer is a development tool only. No security issues have been considered in the virtual framebuffer design. It should be avoided in a production environment, i.e. do not configure production libraries with the -qvfb option. Once the virtual framebuffer (the qvfb application) is running, it is ready for use: Start a server application (i.e. construct a QApplication object with the QApplication::GuiServer flag or use the -qws command line parameter. See the running applications documentation for details). Qtopia Core will create a 640 by 480 pixel display by default. Alternatively, the QWS_SIZE environment variable can be used to set another size, e.g. QWS_SIZE=240x320.

主要内容 常用的Linux工具 事件处理机制 虚拟缓冲机制 设计模式在Qtopia中的运用 国际化 搭建开发环境 参考文献

设计模式在Qtopia中的运用 Singleton模式 Observer模式 组合模式 工厂模式

Singleton模式 意图:保证每个类只有一个实例,并提供一个访问它的全局访问点。 问题:几个不同的客户对象需要引用一个同样的对象,你希望自己拥有的这个对象不超过一个。 解决方案:保证一个实例。 工作方式:拥有一个特点的方法,这个方法被用来实例化需要的对象。当这个方法被调用时,它首先检查该对象是否已被实例化,如果已经被实例化,则返回一个引用,否则实例化该对象,返回引用。 Feature* Feature::getInstance(const QString &key) { QString ukey = key.toUpper(); if (!instances.contains(ukey)) instances[ukey] = new Feature(ukey); return instances[ukey]; } 参考代码:qtopiacore/qt/tool/qconfig/feature.cpp

Observer模式 意图:定义对象间的一对多的依赖关系,当对象中一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 问题:当某个事件发生时,它需要向已系列对象发送通知,而这个对象的列表也是不断变化的。 class Observer { public: virtual ~Observer() { }; virtual void update( Subject* subject ) = 0; }; class Subject virtual ~Subject() { }; virtual void attach( Observer* observer ); virtual void detach( Observer* observer ); virtual void notify(); protected: Subject() { }; private: QList<Observer*> m_observers; inline void Subject::notify() foreach( Observer *observer, m_observers ) { observer->update( this ); } 参考代码:src/libraries/qtopiamedia/observer.h

组合模式 意图:将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。 参考代码:qtopiacore\qt\src\corelib\kernel\QObject.cpp

工厂模式 意图:定义一个用于创建对象的接口,让子类决定实例化那一个类,将实例化延迟到其子类。 问题:一个类需要实例化另一个类的派生类,但不知道具体是那个派生类。工厂模式允许让派生类来做出决定。 class Q_GUI_EXPORT QMouseDriverFactory { public: static QStringList keys(); static QWSMouseHandler *create(const QString&, const QString &); }; 参考代码:qmousedriverfactory_qws.cpp

主要内容 常用的Linux工具 事件处理机制 虚拟缓冲机制 设计模式在Qtopia中的运用 国际化 搭建开发环境 参考文献

国际化 为了对字符串进行国际化,常利用tr()来封装字符串,以便在利用lupdate时能够将字符串提取出来,但当字符串会起变化时,简单的利用tr()来封装字符串变得不可行,可行的方式有两种: 利用qt提供的arg()。 对字符串进行分割,调用append()函数来最佳字符串。

主要内容 常用的Linux工具 事件处理机制 虚拟缓冲机制 设计模式在Qtopia中的运用 国际化 搭建开发环境 参考文献

搭建开发环境 基于Source Insight 3.5搭建Qtopia开发环境 基于Eclipse 3.3搭建Qtopia开放环境

搭建开发环境 基于Source Insight 3.5搭建Qtopia开发环境 基于Eclipse 3.3搭建Qtopia开放环境

基于Source Insight 3.5搭建Qtopia开发环境(环境) 根据大多数研发人员可能更熟悉windows平台,出于在Linux下开发qtopia的方便的考虑,搭建开发环境的方法如下: 开放工具及服务: Source Insight 3.5、GCC、Gdb、Samba Server 。 平台: win(代码编写)、Linux(编译调试)

基于Source Insight 3.5搭建Qtopia开发环境(搭建流程) 进行linux各项配置 ,IP地址、网关、防火墙等。 尝试利用ping命令从win下ping linux,尝试利用ping命令从linux下ping win。 当两者都能相互ping通时,说明网络搭建完成。 打开Linux下的Samba Server配置工具,在share标签下添加欲共享给win的linux共享目录。Samba服务建立完成后,从win下运行远程访问,在win“运行”窗口下运行\\linuxIpAddress,就可以看到共享的linux目录了。 然后利用source Insight 3.5创建工程,在source Insight 3.5下进行代码的编写,在Linux下执行有关命令进行编译。

搭建开发环境 基于Source Insight 3.5搭建Qtopia开发环境 基于Eclipse 3.3搭建Qtopia开放环境

基于Eclipse 3.3搭建Qtopia开放环境(环境) 鉴于大多数研发人员更适应利用集成开发环境来进行软件的开发,Eclipse作为一款极为优秀的IDE开放工具已经被大多数开放人员熟悉,本人尝试了下利用Eclipse来搭建开发环境,获得了成功: 开发工具:Eclipse 3.3 、Gcc、Gdb、Java 5 JRE(支持Eclipse 3.3 )。 平台:Linux Eclipse 3.3 下载地址:http://www.eclipse.org/downloads/moreinfo/c.php

基于Eclipse 3.3搭建Qtopia开放环境(搭建环境) 从官方网站下载获得eclipse-cpp-europa-linux-gtk.tar,如果你机器上没有Java 5 JRE,则从Sun官方网站上下载Java 5 JRE。先编译Java 5 JRE,然后将Eclipse 3.3解压到特定目录。 打开Eclipse 3.3后然后创建一个C++的工程,点击projectName右键选择Properties选项。在C/C++ Gereral目录下选择Paths and symbols,在里面添加Lib和Include路径。 点击projectName右键选择Make target,选择Create创建编译命令,编译时采用Build选项选择正确的命令编译。 点击projectName右键选择Debug as,如果是本地应用程序,则采用Local C/C++ Application方式进行调试,如果应用程序不在本地,则采用Open Debug Dialog方式进行调试,在Dialog中可以设置应用程序路径、环境变量、Debug工具等。

参考文献 Alan Ezust, Paul Ezust, Prentice.Hall.PTR.An.Introduction.to.Design.Patterns.in.C.plus.plus.with.Qt.4.Aug.2006.chm, August 31, 2006 Mark G. Sobell , A Practical Guide to Linux Commands, Editors, and Shell , July 01, 2005 Programming.chm Qtopia 4.2 help documentation Eclipse 3.3 help documentation