Qt入门培训ppt课件

上传人:资****亨 文档编号:145247417 上传时间:2020-09-18 格式:PPT 页数:110 大小:3.11MB
返回 下载 相关 举报
Qt入门培训ppt课件_第1页
第1页 / 共110页
Qt入门培训ppt课件_第2页
第2页 / 共110页
Qt入门培训ppt课件_第3页
第3页 / 共110页
Qt入门培训ppt课件_第4页
第4页 / 共110页
Qt入门培训ppt课件_第5页
第5页 / 共110页
点击查看更多>>
资源描述

《Qt入门培训ppt课件》由会员分享,可在线阅读,更多相关《Qt入门培训ppt课件(110页珍藏版)》请在金锄头文库上搜索。

1、.,.,Qt入门培训,Qt introduction,.,Qt简介 Qt的使用 Qt深入理解 Qt的应用,.,Qt简介,什么是Qt?,.,什么是Qt?,原来用作用户界面开发,现可用作所有的开发 例如:Databases, XML, WebKit, multimedia, networking, OpenGL, scripting, non-GUI.,”Qt 是一个用C+编写的跨平台开发框架.”,.,什么是Qt?,Qt由模块构建,QtCore,Phonon,QtXmlPatterns,QtXml,QtWebKit,QtSvg,QtSql,QtScript,QtOpenVG,QtOpenGL,Qt

2、Network,QtMultimedia,QtGui,.,什么是QT?,Qt用宏(macros)和内省(introspection)扩展了C+ 所有的代码仍然是简明C + +,foreach (int value, intList) QObject *o = new QPustButton; o-metaObject()-className(); / 返回 ”QPushButton” connect(button, SIGNAL(clicked(), window, SLOT(close();,.,Qt的目的,一次编写,到处编译 根据不同平台的本地观感生成相应的本地应用 简单地使用API,高开

3、发效率,开放性,使用有趣,.,Qt的历史,1990,1991,1994,1999,2001,Haavard 和 Eirik灵感闪现,开始设计,并提出信号和槽的概念,1993,开发出Qt的第一个图形核心,命名为Qt,并建立“奇趣科技”,1995,签订第一个合同,开始快速发展。,1997,Qt1.2发布, 并且用于开发KDE。,Qt 2.0发布,Qt 3.0发布。,2005,Qt 4.0发布,2008,Nokia收购奇趣科技,.,Qt的跨平台桌面平台,Windows Mac OS X Linux/Unix X11,.,Qt的跨平台嵌入式平台,Windows CE Symbian Maemo 嵌入式

4、Linux,.,Qt的授权,LGPL 免费 你的应用程序可以是开源的或者是不开源的 对Qt的修改,必须反馈到社区 GPL 免费 你的应用程序必须是开源的 对Qt的修改,必须反馈到社区 商业的 收费 你的应用程序可以是不开源 的 对Qt的修改,可以不开源,.,Qt简介 Qt的使用 Qt深入理解 Qt的应用,.,Qt的代码结构-Hello World,.,Qt的代码结构-Hello World,#include #include int main( int argc, char *argv ) QApplication app( argc, argv ); QLabel l( Hello Worl

5、d! ); l.show(); return app.exec(); ,.,Qt的代码结构-Hello World,#include #include int main( int argc, char *argv ) QApplication app( argc, argv ); QLabel l( Hello World! ); l.show(); return app.exec(); ,.,Qt的代码结构-Hello World,#include #include int main( int argc, char *argv ) QApplication app( argc, argv )

6、; QLabel l( Hello World! ); l.show(); return app.exec(); ,.,Qt的代码结构-Hello World,#include #include int main( int argc, char *argv ) QApplication app( argc, argv ); QLabel l( Hello World! ); l.show(); return app.exec(); ,.,Qt的代码结构-Hello World,#include #include int main( int argc, char *argv ) QApplica

7、tion app( argc, argv ); QLabel l( Hello World! ); l.show(); return app.exec(); ,.,Qt开发工具集,Qt Creator Qt Designer Qt Linguist Qt Assisant Qt Demos,.,信号(Signal)与槽(Slot)初探,QT提供的一种在对象间进行通讯的技术。 动态地或松散地将事件和状态变化联系起来。 信号和槽机制是使Qt运作的元素。,.,信号(Signal)与槽(Slot)初探,类似于windows中的消息和消息响应 都是通过C+类成员函数实现的 信号和槽是通过连接实现相互关联

8、的 包含信号或槽的类必须从QObject继承,.,信号(Signal)与槽(Slot)初探,emit clicked();,.,信号(Signal)与槽(Slot)初探,private slots: void on_addButton_clicked(); void on_deleteButton_clicked();,connect(clearButton,SIGNAL(clicked(),listWidget,SLOT(clear();,connect(addButton,SIGNAL(clicked(),this,SLOT(.);,2x,clear();,.,信号(Signal)与槽(S

9、lot)初探, . emit clicked(); . , . emit clicked(); . , . emit clicked(); . , QString newText = QInputDialog:getText(this, Enter text, Text:); if( !newText.isEmpty() ) ui-listWidget-addItem(newText); , foreach (QListWidgetItem *item, ui-listWidget-selectedItems() delete item; ,clear();,.,信号(Signal)与槽(Sl

10、ot)初探,class Employee : public QObject Q_OBJECT public: Employee(); int salary() const; public slots: void setSalary(int newSalary); signals: void salaryChanged(int newSalary); private: int mySalary; ; emit salaryChanged(50);,信号和槽的声明:,.,信号(Signal)与槽(Slot)初探,.,信号(Signal)与槽(Slot)初探,信号与槽机制只能用在继承于QObject

11、的类。 槽可以返回值,但通过联接返回时不能有返回值,槽以一个普通的函数实现,可以作为普通函数调用。 信号总是返回空,信号总是不必实现 一个信号可以连接到多个槽,但槽的调用顺序不确定。 信号和槽需要具有相同的参数列表;如果信号的参数比槽多,那么多余的参数会被忽略;如果参数列表不匹配,Qt会产生运行时错误信息,.,信号和槽 vs 回调,回调(callback)是一个函数指针,当一个事件发生时被调用,任何函数都可以被安排作为回调。 没有类型安全 总是以直接调用方式工作 信号和槽的方式更加动态 一个更通用的机制 更容易互连两个已存在的类 相关类之间涉及更少的知识共享,.,用户界面设计,用户界面由特定的

12、部件(widget)构建,.,用户界面设计三种方式,1.绝对定位(absolute positioning ) 最粗劣的方式 对部件的大小、位置进行硬编码 2. 手工布局(manual layout) 绝对位置,但通过resizeEvent()方法改变大小 3.布局管理器(layout managers) 部件放置在布局管理器中,使界面更具弹性。,.,布局管理器的优点?,让部件适应内容 让部件适应翻译变化 让部件适应用户设置,.,布局管理,几种可用的布局 布局管理器和部件“协商”各个部件大小与位置 弹簧可以用来填充空白处,QGridLayout,QVBoxLayout,QHBoxLayout,

13、.,布局管理器示例,对话框由多层的布局管理器和部件组成 两种方式:代码实现,使用设计器,.,布局管理器代码实现,QVBoxLayout *outerLayout = new QVBoxLayout(this); QHBoxLayout *topLayout = new QHBoxLayout(); topLayout-addWidget(new QLabel(Printer:); topLayout-addWidget(c=new QComboBox(); outerLayout-addLayout(topLayout); QHBoxLayout *groupLayout = new QHBo

14、xLayout(); . outerLayout-addLayout(groupLayout); outerLayout-addSpacerItem(new QSpacerItem(.); QHBoxLayout *buttonLayout = new QHBoxLayout(); buttonLayout-addSpacerItem(new QSpacerItem(.); buttonLayout-addWidget(new QPushButton(Print); buttonLayout-addWidget(new QPushButton(Cancel); outerLayout-addL

15、ayout(buttonLayout);,.,布局管理器代码实现,QVBoxLayout *outerLayout = new QVBoxLayout(this); QHBoxLayout *topLayout = new QHBoxLayout(); topLayout-addWidget(new QLabel(Printer:); topLayout-addWidget(c=new QComboBox(); outerLayout-addLayout(topLayout); QHBoxLayout *groupLayout = new QHBoxLayout(); . outerLayout-addLayout(groupLayout); outerLayout-addSpacerItem(new QSpacerItem(.); QHBoxLayout *buttonLayout = new QHBoxLayout(); buttonLayout-addSpacerItem(new QSpacerItem(.); buttonLayout-addWidget(new QPushButton(Print); buttonLayout-addWidget(new QPushButton(Cancel); outerLayout-addLayout(but

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

当前位置:首页 > 高等教育 > 大学课件

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