- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式GUI程序设计
内蒙古工业大学计算机系
王晓强
2015.11.27
内容摘要
Qt 简介
Qt 程序设计方法
移植Qt/Embedded环境
QT 简 介
Qt
Qt 是跨平台的应用程序和 UI 框架。 它包括跨平台类库、集成开发工具和跨平台 IDE。使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。
Qt
Qt 的用途
Qt 支持的平台
Qt
Qt 的开发工具
GUI Designer
国际化工具
HTML 帮助系统
Visual Studio 和 Eclipse 集成
跨平台构建工具
Qt Creator
Qt Creator
Qt Creator 是专为满足 Qt 开发人员需求而量身定制的跨平台集成开发环境 (IDE)。Qt Creator 可在 Windows、Linux/X11 和 Mac OS X 桌面操作系统上运行,供开发人员针对多个桌面和移动设备平台创建应用程序。
Qt Creator
Qt Creator包括:
高级 C++ 和 JavaScript 代码编辑器
集成用户界面设计器
项目和构建管理工具
gdb 和 CDB 调试程序的支持
版本控制的支持
移动用户界面模拟器
为桌面和移动目标平台提供支持
Qt 程序设计方法
Qt 编程核心技术
QObject类
QApplication
QWidget
信号和插槽
QTDesigner
QT开发的一般步骤
QObject类
QObject是QT所有类的基类,QObject是Qt Object Model的核心。是Qt各种功能的源头活水,就象MFC中的CObject和Dephi中的TObject。
对象树:QObject 在对象树中组织它们自己。当你以另外一个对象作为父对象来创建一个QObject 时,它就被添加到父对象的children()列表中,并且当父对象被删除的时候,它也会被删除。这种机制很好的适合了图形用户界面应用对象的需要。
事件:事件是由窗口系统或qt本身对各种事务的反应而产生的。当用户按下、释放一个键或鼠标按钮,一个键盘或鼠标事件被产生;当窗口第一次显示,一个绘图事件产生,从而告知必威体育精装版的可见窗口需要重绘自身。大多数事件是由于响应用户的动作而产生的,但还有一些,比如定时器等,是由系统独立产生的。
事件运行机制
事件循环
QApplication
QApplication和QWidget都是QObject类的子类。
QApplication类负责GUI应用程序的控制流和主要的设置,它包括主事件循环体,负责处理和调度所有来自窗口系统和其他资源的事件,并且处理应用程序的开始、结束以及会话管理,还包括系统和应用程序方面的设置。对于一个应用程序来说,建立此类的对象是必不可少的。
QWidget
QWidget类是所有用户接口对象的基类,它继承了QObject类的属性。组件是用户界面的单元组成部分,它接收鼠标、键盘和其它从窗口系统来的事件,并把它自己绘制在盘屏幕上。
QWidget类有很多成员函数,但一般不直接使用,而是通过子类继承来使用其函数功能。如,QPushButton、QlistBox等都是它的子类。
一个完整的Qt程序
#include QApplication
#include QLabel
int main (int argc, char *argv [])
{
QApplication app (argc, argv);
QLabel *label = new QLabel (Hello Qt!);
label-show ();
return app.exec ();
}
信号和插槽
信号和槽机制是 Qt 的核心机制,利用信号(signal)和插槽(slot)机制可以让编程人员将互不相关的对象绑定在一起,实现对象之间的通信。
信号:当对象改变其状态时,信号就由该对象发射 (emit) 出去,而且对象只负责发送信号,它不知道另一端是谁在接收这个信号。这样就做到了真正的信息封装,能确保对象被当作一个真正的软件组件来使用。
槽:用于接收信号,而且槽只是普通的对象成员函数。一个槽并不知道是否有任何信号与自己相连接。而且对象并不了解具体的通信机制。
Signal和Slot的声明(1/2)
在Qt程序设计中,凡是包含signal和slot的类中都要加Q_OBJECT的定义。
class Student : public QObject
{
Q_OBJECT
public:
Student() { myMark = 0; }
int mark() const { return myMark; }
文档评论(0)