GUI程序设计

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– 槽:用于接收信号,而且槽只是普通的对象成员函数。一个槽并 不知道是否有任何信号与自己相连接。而且对象并不了解具体的 通信机制。
•15
Signal和Slot的声明(1/2)
在Qt程序设计中,凡是包含signal和slot的类中都要加Q_OBJECT 的定义。
class Student : public QObject {
•14
信号和插槽
信号和槽机制是 Qt 的核心机制,利用信号(signal)和插槽(slot)机制 可以让编程人员将互不相关的对象绑定在一起,实现对象之间的通信。
– 信号:当对象改变其状态时,信号就由该对象发射 (emit) 出去, 而且对象只负责发送信号,它不知道另一端是谁在接收这个信号。 这样就做到了真正的信息封装,能确保对象被当作一个真正的软 件组件来使用。
•13
一个完整的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 编程核心技术
QObject类 QApplication QWidget 信号和插槽 QTDesigner QT开发的一般步骤
•9
QObject类
QObject是QT所有类的基类,QObject是Qt Object Model的核心。 是Qt各种功能的源头活水,就象MFC中的CObject和Dephi中的TObject 。
对象树:QObject 在对象树中组织它们自己。当你以另外一个对象 作为父对象来创建一个QObject 时,它就被添加到父对象的children()列 表中,并且当父对象被删除的时候,它也会被删除。这种机制很好的适 合了图形用户界面应用对象的需要。
事件:事件是由窗口系统或qt本身对各种事务的反应而产生的。当 用户按下、释放一个键或鼠标按钮,一个键盘或鼠标事件被产生;当窗 口第一次显示,一个绘图事件产生,从而告知最新的可见窗口需要重绘 自身。大多数事件是由于响应用户的动作而产生的,但还有一些,比如 定时器等,是由系统独立产生的。
内容摘要
Qt 简介 Qt 程序设计方法 移植Qt/Embedded环境
QT 简 介
•2
Qt
Qt 是跨平台的应用程序和 UI 框架。 它包括跨平台类库、集成开发工具和 跨平台 IDE。使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便 可跨不同桌面和嵌入式操作系统部署这些应用程序。
•6
Qt Creator
Qt Creator包括: – 高级 C++ 和 JavaScript 代码编辑器 – 集成用户界面设计器 – 项目和构建管理工具 – gdb 和 CDB 调试程序的支持 – 版本控制的支持 – 移动用户界面模拟器 – 为桌面和移动目标平台提供支持
•7
Qt 程序设计方法
•8
} }
•10
事件运行机制
QApplication::exec()
QApplication :: sendPostedEvents();
QApplication ::enter_loop()
事件循环
QApplication ::processNextEvent()
QWSDisplay ::getEvent()
•3
Qt
• Qt 的用途
• Qt 支持的平台
•4
Qt
• Qt 的开发工具
– GUI Designer – 国际化工具 – HTML 帮助系统 – Visual Studio 和 Eclipse 集成 – 跨平台构建工具 – Qt Creator
•5
Qt Creator
Qt Creator 是专为满足 Qt 开发人员需求而量身定制的跨平台集成开发环 境 (IDE)。Qt Creator 可在 Windows、Linux/X11 和 Mac OS X 桌面操作系统 上运行,供开发人员针对多个桌面和移动设备平台创建应用程序。
•16
Signal和Slot的声明(2/2)
signal的发出一般在事件的处理函数中,利用emit发出signal,在 下面的例子中在在事件处理结束后发出signal
void Student::setMark(int newMark) {
if (newMark!= myMark) { myMark = newMark; emit markChanged(myMark);
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; };
•12
QWidget
• QWidget类是所有用户接口对象的基类,它继承了 QObject类的属性。组件是用户界面的单元组成部分,它 接收鼠标、键盘和其它从窗口系统来的事件,并把它自 己绘制Байду номын сангаас盘屏幕上。
• QWidget类有很多成员函数,但一般不直接使用,而是 通过子类继承来使用其函数功能。如,QPushButton、 QlistBox等都是它的子类。
QApplication ::qwsProcessEvent()
QWSServer ::processEventQueue()
•11
QApplication
• QApplication和QWidget都是QObject类的子类。 • QApplication类负责GUI应用程序的控制流和主要的设
置,它包括主事件循环体,负责处理和调度所有来自窗 口系统和其他资源的事件,并且处理应用程序的开始、 结束以及会话管理,还包括系统和应用程序方面的设置 。对于一个应用程序来说,建立此类的对象是必不可少 的。
相关文档
最新文档