Qt入门培训

上传人:lcm****801 文档编号:112422130 上传时间:2019-11-06 格式:PPT 页数:110 大小:3.23MB
返回 下载 相关 举报
Qt入门培训_第1页
第1页 / 共110页
Qt入门培训_第2页
第2页 / 共110页
Qt入门培训_第3页
第3页 / 共110页
Qt入门培训_第4页
第4页 / 共110页
Qt入门培训_第5页
第5页 / 共110页
点击查看更多>>
资源描述

《Qt入门培训》由会员分享,可在线阅读,更多相关《Qt入门培训(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 QtXmlQtWebKit QtSvg QtSqlQtScript QtOpenVG QtOpenGL QtNetwork QtM

2、ultimedia 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,高开发效率,开放性,使用有趣 Q

3、t的历史 19901991199419992001 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 嵌入式Linux Qt的

4、授权 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 World!“ ); l.show();

5、 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 ); QLabel l( “Hello

6、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 ) QApplication app( argc, argv

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

8、ject继承 信号(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)与槽(Slot)初探 . emit clicked

9、(); . . 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)与槽(Slot)初探 class Employee : public

10、 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)是一个函数指针,当一个事件发 生时被调用,任何函数都可以被安排作为回调。 没有类型安全 总是以直接调用方式工作 信号和槽的方式更加动态 一个更通用的机制 更容易互连两个已存在的类 相关类之间涉及更少的知识共享 用户界面设计 用户界面由特定的部件(widget)构建 用户界面设计三种方式 1.绝对定位(

12、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 QHBoxLayout(); . out

14、erLayout-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(button

15、Layout); 布局管理器代码实现 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(

16、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(buttonLayout); 布局管理器代码实现 QVBoxLayout *outerLayout = new QVB

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

当前位置:首页 > 大杂烩/其它

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