版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,嵌入式GUI程序设计,内蒙古工业大学计算机系 王晓强 2015.11.27,内容摘要,Qt 简介 Qt 程序设计方法 移植Qt/Embedded环境,3,QT 简 介,4,Qt,Qt 是跨平台的应用程序和 UI 框架。 它包括跨平台类库、集成开发工具和跨平台 IDE。使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。,5,Qt,Qt 的用途 Qt 支持的平台,6,Qt,Qt 的开发工具 GUI Designer 国际化工具 HTML 帮助系统 Visual Studio 和 Eclipse 集成 跨平台构建工具 Qt Creator,
2、7,Qt Creator,Qt Creator 是专为满足 Qt 开发人员需求而量身定制的跨平台集成开发环境 (IDE)。Qt Creator 可在 Windows、Linux/X11 和 Mac OS X 桌面操作系统上运行,供开发人员针对多个桌面和移动设备平台创建应用程序。,8,Qt Creator,Qt Creator包括: 高级 C+ 和 JavaScript 代码编辑器 集成用户界面设计器 项目和构建管理工具 gdb 和 CDB 调试程序的支持 版本控制的支持 移动用户界面模拟器 为桌面和移动目标平台提供支持,9,Qt 程序设计方法,10,Qt 编程核心技术,QObject类 QAp
3、plication QWidget 信号和插槽 QTDesigner QT开发的一般步骤,11,QObject类,QObject是QT所有类的基类,QObject是Qt Object Model的核心。是Qt各种功能的源头活水,就象MFC中的CObject和Dephi中的TObject。 对象树:QObject 在对象树中组织它们自己。当你以另外一个对象作为父对象来创建一个QObject 时,它就被添加到父对象的children()列表中,并且当父对象被删除的时候,它也会被删除。这种机制很好的适合了图形用户界面应用对象的需要。 事件:事件是由窗口系统或qt本身对各种事务的反应而产生的。当用户按
4、下、释放一个键或鼠标按钮,一个键盘或鼠标事件被产生;当窗口第一次显示,一个绘图事件产生,从而告知最新的可见窗口需要重绘自身。大多数事件是由于响应用户的动作而产生的,但还有一些,比如定时器等,是由系统独立产生的。,12,事件运行机制,事件循环,13,QApplication,QApplication和QWidget都是QObject类的子类。 QApplication类负责GUI应用程序的控制流和主要的设置,它包括主事件循环体,负责处理和调度所有来自窗口系统和其他资源的事件,并且处理应用程序的开始、结束以及会话管理,还包括系统和应用程序方面的设置。对于一个应用程序来说,建立此类的对象是必不可少的
5、。,14,QWidget,QWidget类是所有用户接口对象的基类,它继承了QObject类的属性。组件是用户界面的单元组成部分,它接收鼠标、键盘和其它从窗口系统来的事件,并把它自己绘制在盘屏幕上。 QWidget类有很多成员函数,但一般不直接使用,而是通过子类继承来使用其函数功能。如,QPushButton、QlistBox等都是它的子类。,15,一个完整的Qt程序,#include #include int main (int argc, char *argv ) QApplication app (argc, argv); QLabel *label = new QLabel (Hell
6、o Qt!); label-show (); return app.exec (); ,16,信号和插槽,信号和槽机制是 Qt 的核心机制,利用信号(signal)和插槽(slot)机制可以让编程人员将互不相关的对象绑定在一起,实现对象之间的通信。 信号:当对象改变其状态时,信号就由该对象发射 (emit) 出去,而且对象只负责发送信号,它不知道另一端是谁在接收这个信号。这样就做到了真正的信息封装,能确保对象被当作一个真正的软件组件来使用。 槽:用于接收信号,而且槽只是普通的对象成员函数。一个槽并不知道是否有任何信号与自己相连接。而且对象并不了解具体的通信机制。,17,Signal和Slot的
7、声明(1/2),在Qt程序设计中,凡是包含signal和slot的类中都要加Q_OBJECT的定义。 class Student : public QObject Q_OBJECT public: Student() myMark = 0; int mark() const return myMark; public slots: void setMark(int newMark); signals: void markChanged(int newMark); private: int myMark; ;,18,Signal和Slot的声明(2/2),signal的发出一般在事件的处理函数中
8、,利用emit发出signal,在下面的例子中在在事件处理结束后发出signal void Student:setMark(int newMark) if (newMark!= myMark) myMark = newMark; emit markChanged(myMark); ,19,Signal和Slot的连接(1/2),在signal和slot声明以后,需要使用connect()函数将它们连接起来。 bool QObject:connect ( const QObject * sender, const char * signal, const QObject * receiver,
9、const char * member ) static 其中第一个和第三个参数分别指出signal和slot是属于那个对象或组件,20,Signal和Slot的连接(2/2),在使用connect()函数进行来接的时候,还需要用到SIGNAL()和SLOT()这两个宏,使用方法如下: QLabel *label = new QLabel; QScrollBar *scroll = new QScrollBar; QObject:connect( scroll,SIGNAL(valueChanged(int), label, SLOT(setNum(int) );,21,Signal和Slot
10、的连接方式,一个信号可以连接多个槽:当信号发射时,会以不确定的顺序一个接一个的调用各个槽。 多个信号可以连接同一个槽:即无论是哪一个信号被发射,都会调用这个槽。 信号直接可以相互连接:发射第一个信号时,也会发射第二个信号。,22,取消Signal和Slot连接,取消一个连接: disconnect(lcd,SIGNAL(overflow(),this,SLOT(handleMathError(); 取消一个连接不是很常用,因为Qt会在一个对象被删除后自动取消这个对象所包含的所有的连接,23,Qt Designer,简单来说,QT Designer就是一个GUI工具,利用QT Designer可
11、以用一种所见即所得的方式产生QT程序,而且所产生的代码与手写的代码功能一致。 使用Qt Designer程序开发时,一般要涉及到下面几个步骤: 1.创建和初始化子部件 2.设置子部件布局 3.设置Tab键次序(不是必须) 4.建立信号与插槽的连接 5.编写事件处理函数,24,Qt程序开发一般过程,1. 使用designer 设计界面,添加窗口组件 建立信号槽连接 编写事件处理函数 保存工程为.ui文件,得到一个主窗口类 2. 编写main.cpp文件进行主窗口类的实例化及显示 3. 设置编译所需的环境变量 QTDIR =,25,Qt程序开发一般过程,4.使用qmake生成.pro工程文件 rootIntel qt4qmake -project 5.通过qmake自动生成Makefile文件 rootIntel qt4qmake 6. make生成可执行文件 7.运行,26,移植搭建Qt/Embedded环境,27,一般步骤,建立Qt/Embedded开发环境 1、下载安装QT for embedded源代码 # tar xvjf qt-embedded-linux-opensource-src-4.4.0.tar.bz2 2、配置裁剪Qt/E库源码 # cd qt-embedded-linux-opensource-src-4.4.0 #./con
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 炼油厂每日安全分享
- 糖尿病胰岛素种类
- 术后肺部感染如何预防与护理
- 厨房规划方案总结
- 4-2-2 元素周期表及元素周期律的应用 课件 高一上学期化学人教版(2019)必修第一册
- 黑客攻击解决方案
- 消化道大出血的应急流程演练
- 消防安全知识演练
- 氧化硫说课稿
- 化简比说课稿人教版
- 小讲课-中心静脉压的测量及临床意义
- 华夏基石:目标管理与绩效管理体系构建共课件
- 工业以太网交换机招标技术规范书
- 公司博士后工作站年度工作总结
- 技工院校电子商务专业人才培养方案
- 五年级上学期家长会课件
- 《旅游线路设计》课程大纲
- 询比采购文件模板
- 培训学习确认单样板
- 铜梁区自然灾害类风险评估等级表
- 99S203 消防水泵接合器安装图集
评论
0/150
提交评论