Qt入门培训教材(共111张).pptx
《Qt入门培训教材(共111张).pptx》由会员分享,可在线阅读,更多相关《Qt入门培训教材(共111张).pptx(111页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.Qt入门培训Qt introduction Qt简介Qt的使用Qt深入理解Qt的应用Qt简介什么是Qt?什么是Qt?原来用作用户界面开发,现可用作所有的开发例如:Databases, XML, WebKit, multimedia, networking, OpenGL, scripting, non-GUI.”Qt 是一个用C+编写的跨平台开发框架.”什么是Qt?Qt由模块构建QtCorePhononQtXmlPatternsQtXmlQtWebKitQtSvgQtSqlQtScriptQtOpenVGQtOpenGLQtNetworkQtMultimediaQtGui什么是QT?Qt用宏
2、(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,高开发效率,开放性,使用有趣Qt的历史19901991199419992001Haavard 和Eiri
3、k灵感闪现开始设计,并提出信号和槽的概念1993开发出Qt的第一个图形核心命名为Qt,并建立“奇趣科技”1995签订第一个合同,开始快速发展。1997Qt1.2发布, 并且用于开发KDE。Qt 2.0发布Qt 3.0发布。2005Qt 4.0发布2008Nokia收购奇趣科技Qt的跨平台桌面平台WindowsMac OS XLinux/Unix X11Qt的跨平台嵌入式平台Windows CESymbianMaemo嵌入式LinuxQt的授权LGPL 免费你的应用程序可以是开源的或者是不开源的对Qt的修改,必须反馈到社区GPL 免费你的应用程序必须是开源的对Qt的修改,必须反馈到社区商业的 收
4、费你的应用程序可以是不开源 的对Qt的修改,可以不开源Qt简介Qt的使用Qt深入理解Qt的应用Qt的代码结构-Hello WorldQt的代码结构-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
5、tion 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 World! ); l.show(); return app.exec();Qt的代码结构-Hello World#include #include int main( int argc, char *arg
6、v ) 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 World! ); l.show(); return app.exec();Qt开发工具集1.Qt Creator2.Qt Designer3.Qt Linguist4.Qt Assi
7、sant5.Qt Demos信号(Signal)与槽(Slot)初探QT提供的一种在对象间进行通讯的技术。动态地或松散地将事件和状态变化联系起来。信号和槽机制是使Qt运作的元素。信号(Signal)与槽(Slot)初探 类似于windows中的消息和消息响应都是通过C+类成员函数实现的信号和槽是通过连接实现相互关联的包含信号或槽的类必须从QObject继承信号(Signal)与槽(Slot)初探emit clicked();信号(Signal)与槽(Slot)初探private slots: void on_addButton_clicked(); void on_deleteButton_c
8、licked();connect(clearButton,SIGNAL(clicked(),listWidget,SLOT(clear();connect(addButton,SIGNAL(clicked(),this,SLOT(.);2xclear();信号(Signal)与槽(Slot)初探 . emit clicked(); . . emit clicked(); . . emit clicked(); . QString newText = QInputDialog:getText(this, Enter text, Text:); if( !newText.isEmpty() ) u
9、i-listWidget-addItem(newText); foreach (QListWidgetItem *item, ui-listWidget-selectedItems() delete item; clear();信号(Signal)与槽(Slot)初探class Employee : public QObjectQ_OBJECTpublic:Employee();int salary() const;public slots:void setSalary(int newSalary);signals:void salaryChanged(int newSalary);priva
10、te:int mySalary;emit salaryChanged(50);信号和槽的声明:信号(Signal)与槽(Slot)初探信号(Signal)与槽(Slot)初探 信号与槽机制只能用在继承于QObject的类。 槽可以返回值,但通过联接返回时不能有返回值,槽以一个普通的函数实现,可以作为普通函数调用。信号总是返回空,信号总是不必实现 一个信号可以连接到多个槽,但槽的调用顺序不确定。 信号和槽需要具有相同的参数列表;如果信号的参数比槽多,那么多余的参数会被忽略;如果参数列表不匹配,Qt会产生运行时错误信息信号和槽 vs 回调回调(callback)是一个函数指针,当一个事件发生时被调
11、用,任何函数都可以被安排作为回调。没有类型安全总是以直接调用方式工作信号和槽的方式更加动态一个更通用的机制更容易互连两个已存在的类相关类之间涉及更少的知识共享用户界面设计用户界面由特定的部件(widget)构建用户界面设计三种方式1.绝对定位(absolute positioning )最粗劣的方式对部件的大小、位置进行硬编码2. 手工布局(manual layout)绝对位置,但通过resizeEvent()方法改变大小3.布局管理器(layout managers)部件放置在布局管理器中,使界面更具弹性。布局管理器的优点?让部件适应内容让部件适应翻译变化让部件适应用户设置布局管理几种可用的
12、布局布局管理器和部件“协商”各个部件大小与位置弹簧可以用来填充空白处QGridLayoutQVBoxLayoutQHBoxLayout布局管理器示例对话框由多层的布局管理器和部件组成两种方式:代码实现,使用设计器注意:布局管理器并不是其管理的部件的父对象布局管理器代码实现 QVBoxLayout *outerLayout = new QVBoxLayout(this); QHBoxLayout *topLayout = new QHBoxLayout(); topLayout-addWidget(new QLabel(Printer:); topLayout-addWidget(c=new Q
13、ComboBox(); 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 QPu
14、shButton(Print); buttonLayout-addWidget(new QPushButton(Cancel); outerLayout-addLayout(buttonLayout);布局管理器代码实现 QVBoxLayout *outerLayout = new QVBoxLayout(this); QHBoxLayout *topLayout = new QHBoxLayout(); topLayout-addWidget(new QLabel(Printer:); topLayout-addWidget(c=new QComboBox(); outerLayout-ad
15、dLayout(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); buttonLay
16、out-addWidget(new QPushButton(Cancel); outerLayout-addLayout(buttonLayout);布局管理器代码实现 QVBoxLayout *outerLayout = new QVBoxLayout(this); QHBoxLayout *topLayout = new QHBoxLayout(); topLayout-addWidget(new QLabel(Printer:); topLayout-addWidget(c=new QComboBox(); outerLayout-addLayout(topLayout); QHBoxL
17、ayout *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 QPushBut
18、ton(Cancel); outerLayout-addLayout(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 Q
19、HBoxLayout(); . 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-a
20、ddLayout(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(); . outerLayou
21、t-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(buttonLayout);布局管
22、理器代码实现 QHBoxLayout *groupLayout = new QHBoxLayout(); QGroupBox *orientationGroup = new QGroupBox(); QVBoxLayout *orientationLayout = new QVBoxLayout(orientationGroup); orientationLayout-addWidget(new QRadioButton(Landscape); orientationLayout-addWidget(new QRadioButton(Portrait); groupLayout-addWidg
23、et(orientationGroup); QGroupBox *colorGroup = new QGroupBox(); QVBoxLayout *colorLayout = new QVBoxLayout(colorGroup); colorLayout-addWidget(new QRadioButton(Black and White); colorLayout-addWidget(new QRadioButton(Color); groupLayout-addWidget(colorGroup);Horizontal box, 包含 group boxes, vertical bo
24、xes, radio buttons布局管理器设计器可以使用设计器来建立同样的结构通用部件 Qt包含针对所有情形的大量通用部件; 第三方控件,如QWT 自定义控件尺寸(size)的策略布局管理器是在空间和其他布局管理器之间进行协调布局管理器提供布局结构水平布局和垂直布局网格布局部件则提供各个方向上的尺寸策略最大和最小尺寸尺寸的策略例子未完成!printerList-setSizePolicy(QSizePolicy:Expanding, QSizePolicy:Fixed)尺寸的策略每一个widget有一个大小的示意,它给出了各个方向上尺寸的策略Fixed 规定了widget的尺寸Minimu
25、m 规定了可能的最小值Maximum 规定可能的最大值Preferred 给出最好的值但不是必须的Expanding 同preferred,但希望增长MinimumExpanding 同minimum,但希望增长Ignored 忽略规定尺寸, widget得到尽量大的空间如果?2个 preferred 相邻1个 preferred, 1个 expanding2个 expanding 相邻空间不足以放置widget (fixed)关于尺寸的更多信息可用最大和最小属性更好地控制widget的大小maximumSize 最大可能尺寸minimumSize 最小可能尺寸ui-pushButton-se
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Qt 入门 培训教材 111
限制150内