版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Qt简介 Qt的作用 Qt的特性及优势 包含Qt的系统的架构 如何学习Qt,Qt简介 图形用户界面 (Graphical User Interface)是指采用图形方式显示的计算机操作用户界面 对比:早期的操作系统,如DOS,CUI(Command line User Interface)命令行模式的人机接口 组成部分:桌面、视窗、菜单、按钮、图标等 Qt是跨平台的C+应用程序和UI开发的框架 Qt4有超过500个类和9000多个函数,使用Qt可以迅速开发出期望的应用程序,Qt在整个产品开发中的作用 构建桌面环境; 为应用程序提供可视化的、友好的界面; 利用Qt类库自带的功能构建复杂应用程序;
2、 使用Qt构建的产品: ,Qt的特性及优势 易于获取,个人应用完全免费 全面的、艺术级的应用程序框架 良好的跨平台性,一劳永逸 多语言的支持,包含Qt的系统的架构,包含Qt的系统的架构,学习Qt可用的资源 NO1: Qt参考文档,包括类的简介、类相关函数的介绍、自带例程的源码及讲解、函数的查找和使用、核心特性、关键技术等 NO2: Qt中文论坛 NO3: C+GUI Programming with Qt4,Second Edition -官方参考文档,讲解精到,Qt学习方法 NO1:学习Qt自带教程,Qt的example及其参考代码。参考qtdemo程序,学习demo
3、完成自己的程序。 NO2: 阅读书籍,随书进行编程练习。如C+GUI Qt4编程,提供有完善的代码,Qt程序开发 QtCreator介绍 Hello Qt!程序开发流程 几个Qt练习,Qt Creator的设计目标是使开发人员能够利用Qt 这个应 用程序框架更加快速及轻易的完成开发任务。 Nokia 收购Qt之后在Qt的工具上做了很大的工作,推出的 一款新的轻量级集成开发环境(IDE), 即QtCreator。 QtCreator IDE 能够跨平台运行,支持的系统包括 Linux (32 位及 64 位)、Mac OS、Windows等。,功能介绍: 项目生成向导 高级 C+ 代码编辑器 文
4、件及类管理工具 集成了Qt Designer 集成了qmake 构建工具 集成了图形化的 GDB 调试前端,利用QtCreator开发Qt应用程序的基本流程: 创建工程 项工程中添加文件 设计界面 编写代码实现功能 调试运行,创建工程 打开QtCreator,“File-New File or Project”,选择 “Qt4 Gui Application”,输入工程名称:如ex01_helloQt 选择工程路径:如D:project,根据应用选择功能模块,此工程保持默认即可。,创建Qt4 Gui Application时,向导会自动生成一个新类,将来可在 该类中完成应用程序的功能。 此步设
5、置该类名称,选择基类名称,及设置该类代码的文件名称 另外,设置是否要生成UI文件,如果生成则,将来可以在UI文件 中来绘制界面。,最后一步“Finish”即可完成工程创建,在工程管理窗口中双击Forms下的mywidget.ui(UI文件),即可打开Qt Designer(Qt界面设计器) 在Designer中设计界面,编译运行程序:在工程名上右键,选择Run,运行效果:,练习1:隐藏“HelloQt!” 设计两个按钮和一个Label,当点击“show”按钮时显示“HelloQt!”,点击“Hide”按钮时隐藏“HelloQt!”。,按照Hellot方法创建工程,并绘制界面。,添加功能: t使
6、用信号和槽机制可以很容易的实现对象之间的通信,当某些 事件发生时,对应的信号会被发送。 可以将一个对象的信号和其他对象的槽相连,这样,当信号发送 是,和他相连的槽函数即可被调用。,编辑信号和槽: Edit-Edit signal/slots (F4) 编辑对象: Edit-Edit idgets (F3) F4之后,左键拖动“Show”到“HelloQT”上,释放鼠标,会弹出信 号和槽对话框,选择连接clicked()信号和show()槽,同样的方法连接“Hide”的clicked()信号和“HelloQt”的show()槽 连接好后如下图示 如果要编辑部件,按F3回到部件编辑状态即可 最后编
7、译运行程序,观察现象,练习:控制LCDNumber显示 通过slider(滑块)和dial(旋钮)控制 LCDNumber上显示的数字,Qt Creator编译的程序,在其工程文件夹下会有一个debug文件夹,其中有程序的.exe可执行文件。但Qt Creator默认是用动态链接的,就是可执行程序在运行时需要相应的.dll文件。我们点击生成的.exe文件,首先可能显示“没有找到mingwm10.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。”表示缺少mingwm10.dll文件。,解决这个问题我们可以将相应的.dll文件放到系统中。在Qt Creator的安装目录的qt文
8、件下的bin文件夹下(比如安装在了D盘,所以路径是D:Qt2009.04qtbin),可以找到所有的相关.dll文件。 方法一:在这里找到mingwm10.dll文件,将其复制到C:WINDOWSsystem文件夹下即可。下面再提示缺少什么dll文件,都像这样解决就可以了。 方法二:将这些dll文件都与.exe文件放到同一个文件夹下。不过这样每个.exe文件都要放一次。 方法三:将D:Qt2009.04qtbin加入系统Path环境变量。右击我的电脑-属性-高级-环境变量-在系统变量列表中找到Path,将路径加入其中即可。,用纯源码编写: 1.新建空的Qt工程。,2.工程名为hello wor
9、ld,并选择工程保存路径,3.在新建好的工程中添加文件。右击工程文件夹,弹出的菜单中选择Add New。,4.选择普通文件。点击Ok,5.文件名为main.cpp,点击Next进入下一步。,6.这里自动将这个文件添加到了新建的工程中。保持默认设置,点击完成。,7.在main.cpp文件中添加代码。,8.这时点击运行,程序执行了,但看不到效果,因为程序里什么也没做。我们点击信息框右上角的红色方块,停止程序运行。,9.我们再更改代码。添加一个对话框对象。,10.运行效果如下。,11.我们更改代码如下,在对话框上添加一个标签对象,并显示hello world。,12.运行效果如下。,二、Qt Cre
10、ator编写多窗口程序 实现功能: 程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直接关闭这个对话框,便不能进入主窗口,整个程序也将退出。当进入主窗口后,我们按下按钮,会弹出一个对话框,无论如何关闭这个对话框,都会回到主窗口。 实现原理: 程序里我们先建立一个主工程,作为主界面,然后再建立一个对话框类,将其加入工程中,然后在程序中调用自己新建的对话框类来实现多窗口。,实现过程: 1.首先新建Qt4 Gui Application工程,工程名为nGui,Base class选为QWidget。建立好后工程文件列表如下图。,2.新建对话框类,如下图,在新建中,选择Qt Designer F
11、orm Class。,3.选择Dialog without Buttons。,4.类名设为myDlg。,5.点击Finish完成。注意这里已经默认将其加入到了我们刚建的工程中了。,6.如下图,在mydlg.ui中拖入一个Push Button,将其上的文本改为“进入主窗口”,在其属性窗口中将其objectName改为enterBtn(Push Button名字),在下面的Signals and slots editor中进行信号和槽的关联,其中,Sender设为enterBtn,Signal设为clicked(),Receive设为myDlg,Slot设为accept()。这样就实现了单击这个
12、按钮使这个对话框关闭并发出Accepted信号的功能。下面我们将利用这个信号。,7.修改主函数main.cpp,如下: #include #include “widget.h”#include “mydlg.h” /加入头文件int main(int argc, char *argv) QApplication a(argc, argv); Widget w; myDlg my1; /建立自己新建的类的对象my1 if(my1.exec()=QDialog:Accepted) /利用Accepted信号判断enterBtn是否被按下 w.show(); /如果被按下,显示主窗口 return
13、a.exec(); /程序一直执行,直到主窗口关闭 else return 0; /如果没被按下,则不会进入主窗口,整个程序结束运行 主函数必须这么写,才能完成所要的功能。,到这里,我们就实现了一个界面结束执行,然后弹出另一个界面的程序。下面我们在主窗口上加一个按钮,按下该按钮,弹出一个对话框,但这个对话框关闭,不会使主窗口关闭。 8.如下图,在主窗口加入按钮,显示文本为“弹出一个对话框”,在其上点击鼠标右键,在弹出的菜单中选择go to slot。,9.我们选择单击事件clicked()。,10.我们在弹出的槽函数中添加一句: my2.show(); my2为我们新建对话框类的另一个对象,但
14、是my2我们还没有定义,所以在widget.h文件中添加相应代码,如下,先加入头文件,再加入my2的定义语句,这里我们将其放到private里,因为一般的函数都放在public里,而变量都放在private里。,#ifndef WIDGET_H #define WIDGET_H #include #include “mydlg.h” /包含头文件 namespace Ui class Widget; class Widget : public QWidget Q_OBJECT public: Widget(QWidget *parent = 0); Widget(); private: Ui:
15、Widget *ui; myDlg my2; /对my2进行定义 private slots: void on_pushButton_clicked(); ; #endif / WIDGET_H,到这里,再运行程序,便能完成我们实验要求的功能了。整个程序里,我们用两种方法实现了信号和槽函数的关联,第一个按钮我们直接在设计器中实现其关联;第二个按钮我们自己写了槽函数语句,其实图形的设计与直接写代码效果是一样的。,三、Qt Creator登录对话框 实现功能: 在弹出对话框中填写用户名和密码,按下登录按钮,如果用户名和密码均正确则进入主窗口,如果有错则弹出警告对话框。 实现原理: 通过上节的多窗口
16、原理实现由登录对话框进入主窗口,而用户名和密码可以用if语句进行判断。,实现过程: 1.先新建Qt4 Gui Application工程,工程名为mainWidget,选用QWidget作为Base class,这样便建立了主窗口。文件列表如下:,2.然后新建一个Qt Designer Form Class类,类名为loginDlg,选用Dialog without Buttons,将其加入上面的工程中。文件列表如下:,3.在logindlg.ui中设计下面的界面:行输入框为Line Edit。其中用户名后面的输入框在属性中设置其object Name为usrLineEdit,密码后面的输入框
17、为pwdLineEdit,登录按钮为loginBtn,退出按钮为exitBtn。,4.将exitBtn的单击后效果设为退出程序,关联如下:,5.右击登录按钮选择go to slot,再选择clicked(),然后进入其单击事件的槽函数,写入一句 void loginDlg:on_loginBtn_clicked() accept();,6.改写main.cpp: #include #include “widget.h”#include “logindlg.h”int main(int argc, char *argv) QApplication a(argc, argv); Widget w;
18、 loginDlg login; if(login.exec()=QDialog:Accepted) w.show(); return a.exec(); else return 0;,7.这时执行程序,可实现按下登录按钮进入主窗口,按下退出按钮退出程序。 8.添加用户名密码判断功能。将登陆按钮的槽函数改为: void loginDlg:on_loginBtn_clicked() if (ui-usrLineEdit-text()=tr(“qt”) /如果不正确,弹出警告对话框 并在logindlg.cpp中加入#include 的头文件。如果不加这个头文件,QMessageBox类不可用。,9.这时再执行程序,输入用户名为qt,密码为123456,按登录按钮便能进入主窗口了,如果输入错了,就会弹出警告对话框。,如果输入错误,便会弹出警告提示框:,10.在logindlg.cpp的loginDlg类构造函数里,添上初始化语句,使密码显示为小黑点。 loginDlg:loginDlg(QWidget *parent) : QDialog(parent), ui(new Ui:loginDlg) ui-setupUi(this); ui- pwdLineEdit- setEchoMode(QLineEdit:Pas
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 分包工程安全协议完整版
- 维修合同的标的和标的物
- 影视剧制片人聘用合同协议书范本签约版5
- 铝锭生产线建设合同(2024版):生产线建设协议
- 二零二四年度高校毕业设计指导服务协议3篇
- 房屋托管出租的合同范本
- 公路排水沟施工合同范本
- 2024年度仪器设备采购与安装合同
- 《产后出血的处理》课件
- 2024版高层住宅工程防火设施合同
- 安全质量管理员岗位职责
- 膝关节镜手术
- 华为认证无线工程师H35-460考试题及答案
- 数学-2025届湖北省武汉市江岸区高三11月调研试题+答案
- GB/T 26342-2024国际间遗体转运棺柩
- 2020-2024年上海市春考语文真题试卷汇编含答案
- 保安公司转让合同范例
- 人教版六年级语文上册第六单元习作:《学写倡议书》授课课件
- 天津市五区县重点校联考2024-2025学年高三上学期11月期中考试 语文 版含答案
- 云海Insight HD V4.6.5技术白皮书
- 植物学#-形考作业3-国开(ZJ)-参考资料
评论
0/150
提交评论