一、Qt简介
 1、Qt是什么:图形用户界面程序框架
  能做界面的还有什么:MFC、GTK+
 2、Qt的由来和发展
 3、为什么选择Qt
二、Qt环境与工具
 1、工具
   a、Qt助手:里面详细说明了Qt框架中的每一个类、函数、宏等。
  是开发的必备:工具,在终端可以使用assistant开启。
   b、构建器:负责把一个目录下的源码文件、头文件构建成一个Qt工程,并且自动生成Makefile文件。
   c、Qt设计器:以画图的方式来进行设计界面,设计出的界面是没有功能的,如果需要完成相应的功能,还要与代码结合(界面文件可以转换成源码)。
   d、Qt界面界面编译器:负责把以.ui结尾的界面文件,生成对应的代码。
   e、Qt创造器:(Qt creator 集成开发环境:集合了编辑器、助手、构建器、设计器、编译器) 
 2、头文件和库
  Qt框架的头文件存储在/usr/include/qt4,一般以Qt开头结尾无.h。
  Qt框架中的共享库存在在/usr/lib/qt4/imports目录中,一般以libQt开头。
三、第一个Qt程序

 、编写源码
a、创建目录,每个Qt工程都要有一个单独的目录
b、编写入口
// 创建应用程序对象
QApplication app(argc,argv);
// 创建标签对象,此控件专门用来显示文字。
QLabel lab("hello world");
// 显示标签,几乎所有的控件默认都是隐藏的。
lab.show();
// 把程序的运算交给Qt(监控事件、等待用户操作)
return app.exec();
、生成工程文件
qmake -project -> 目录名.pro
此文件可以被Qt创造器打开。
、生成Makefile文件
qmake -> Makefile
、编译
Qt程序在编译时语法检查非法严格,错误信息也很多。
四、查阅帮助文档
 1、打开Qt帮助文档(assistant命令),使用索引、搜索找到对应的控件类、函数、宏,Inherits:它的父类有哪些。
 2、头文件,注意使用此控件时要包含什么头文件,一般情况下是类名。
 3、Properties:具有保护属性的成员变量。
 4、Public Functions:具有公开属性的成员函数,部分功能函数可能在父类中,当需要的成员函数找不到时,可以去父类中再看看。
 5、Reimplemented Public Functions:可以重写的成员函数。
 6、Public Slots:具有公开属性的槽函数,首先它具有某些功能的成员,但它可以与信号绑定,不光可以被信号调用,也可以被直接调用。
 7、Signals:它们是以函数形式存在的,但它们并不实现出来,可以用emit显示的触发。
 8、Reimplemented Protected Functions:可以重写的具有保护属性的成员函数。
 9、Detailed Description:类的使用注意事项。
 10、其它:静态成员、静态成员函数、相关的宏。
 
五、中文处理
 1、不同的字符编码:由于历史原因、地区、国家、文化的不同,所使用的文字编码方式是不同。
  英语国家:ASCII,128个字符。
  中国大陆:GBK2312(windows下常用的字符编码,每个汉字2字节)。
  港台地区:BIG5
 2、统一字符编码
  国际标准化组织想设计出一套全世界通用的字符编码(Unicode):
  UTF-2: 双字节统一字符集。
  UTF-4: 四字节统一字符集。
  UTF-8: 用一到四字节表示一个Unicode字符
  UTF-16: 用二到四字节表示一个Unicode字符
  UTF-32: 用四字节表示一个Unicode字符
 3、内外有别:
  内部编码:Qt应用程序中所有的控件默认使用的是UTF-16编码。
  外部编码:操作系统所使用的编码(ubntu默认使用的是UTF-8编码)。
 4、解决Qt乱码问题。
  Qt4.8默认的是UTF-16编码,因此必须手动设置后才能正确显示中文。
  Qt5.0之后默认的是UTF-8编码。
 5、在程序最开始时设置内部编码
 QTextCodec* code = QTextCodec::codecForName("ut    f-8");
 QTextCodec::setCodecForTr(code);
 QTextCodec::setCodecForLocale(code);
 QTextCodec::setCodecForCStrings(code);
 
 注意:当出现灵异错误时,可以把Qt所有生成的文件删除,再重新构建工程。
 
五、信号与槽
 
 信号:就是以函数形式存在的一种信号。
 槽: 是一种特殊的函数,如果不配合信号,可以当作普通函数使用。
 信号和槽函数必须经常连接才能协同工作。
 connect(负责发送信号的对象指针
  信号函数签名:SIGNAL(函数名及参数)
  接收信号的对象指针:
  槽函数的函数名签名:SLOT(函数名及参数)
  )
 
六、自定义信号和槽
 1、在自定义的类中定义信号和槽函数一定要单独写一个头文件。
 2、自定义的类必须要继承QObject类
 3、在类的开头必须要有宏:Q_OBJECT
 4、定义信号时要加关键字,信号以函数形式存在,但不需要实现。
  signals:
 5、定义槽函数时要加public slots:关键字,可以显示调用,也可以与信号连接,由信号触发调用。
 6、信号由关键字emit 触发,可以带参数也可以不带。
  如果想让信号给槽发送数据,它们的参数格式必须一样。
 
七、控件与容器
 组成窗口界面的小工具叫控件,QLabel,QTextEdit,QPushButton。
 容器用来存放控件的类,
 QMainwindow:主窗口容器,由标题栏、菜单栏、工具栏、状态栏组成。
 练习:完成QQ的登录界面。
 用户名、密码使用,QLineEdit,setEchoMode
 
 
 
 
 

QT的初步学习笔记的更多相关文章

  1. (转)Qt Model/View 学习笔记 (七)——Delegate类

    Qt Model/View 学习笔记 (七) Delegate  类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...

  2. (转)Qt Model/View 学习笔记 (五)——View 类

    Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...

  3. Android NDK开发及OpenCV初步学习笔记

    https://www.jianshu.com/p/c29bb20908da Android NDK开发及OpenCV初步学习笔记 Super_圣代 关注 2017.08.19 00:55* 字数 6 ...

  4. 工厂方法FactoryMethod 初步学习笔记

    一,意图   定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 二,别名   虚构造器 Virtual Constructor 三,适用性 当一个类不知道它 ...

  5. A.Kaw矩阵代数初步学习笔记 10. Eigenvalues and Eigenvectors

    “矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...

  6. A.Kaw矩阵代数初步学习笔记 9. Adequacy of Solutions

    “矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...

  7. A.Kaw矩阵代数初步学习笔记 8. Gauss-Seidel Method

    “矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...

  8. A.Kaw矩阵代数初步学习笔记 7. LU Decomposition

    “矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...

  9. A.Kaw矩阵代数初步学习笔记 6. Gaussian Elimination

    “矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...

随机推荐

  1. git 删除远程分支文件夹

    把不需要版本控制的文件提交到远程分支上后,需要删除远程分支上的文件,用以下操作即可: git rm -r –cached dirname //删除远程文件夹,但保留本地文件夹 git commit - ...

  2. Python代码注释应该怎么写?

    https://zhuanlan.zhihu.com/p/22663276?refer=passer http://zh-google-styleguide.readthedocs.io/en/lat ...

  3. asp.net mvc 微信公众号token验证

    本人的公众号要申请成为开发者,必须经过token认证.微信公众号的官方代码只列出了PHP代码的实例,明显是歧视.net用户.我用的asp.net mvc中的web api,结果调了好久都没有成功,最后 ...

  4. android开发学习笔记系列(6)--代码规范

    在开发android的时候,我对自己写的代码很是不满,原因在于自己看到别人的代码,很是头痛,原因很简单,别人写的代码,我就要去猜他的意思,极其烦恼,嗯,就是他没有遵循代码规范,因此我在博客园上寻找一篇 ...

  5. 没有什么,开发ASP.NET时随便写写,想到什么写什么

    没有什么,开发ASP.NET时随便写写,想到什么写什么,这次想写点开发过程中,比如在数据库,某一张表中有一个字段,如下: 上面代码示例中高亮字段,数据类型为BIT,它存储的值将为"True& ...

  6. Java基础——TreeSet

    TreeSet是SortedSet接口的实现类,Sorted的英文意思是分类的:选择的. TreeSet可以确保集合元素处于排序状态.与HashSet集合相比,TreeSet还提供了如下几个额外方法: ...

  7. JdbcTemplate完全学习

    概述 Spring JDBC抽象框架core包提供了JDBC模板类,其中JdbcTemplate是core包的核心类,所以其他模板类都是基于它封装完成的,JDBC模板类是第一种工作模式. JdbcTe ...

  8. java中那些类是线程安全的?

    Java中各种集合(字符串类)的线程安全性!!! 一.概念: 线程安全:就是当多线程访问时,采用了加锁的机制:即当一个线程访问该类的某个数据时,会对这个数据进行保护,其他线程不能对其访问,直到该线程读 ...

  9. Dubbox分布式框架

    一:简介:前身是阿里巴巴的一个开源的项目,后来停止维护,由当当网继续维护,它致力于rpc远程的调度方案.是一个服务框架 二:执行原理图: 节点角色说明: · Provider: 暴露服务的服务提供方. ...

  10. 关于项目管理工具 maven

    众所周知,maven是目前很常用的项目管理工具.一般情况下,通过在pom.xml添加相应内容,再maven-->update就会自动把相应的jar包下载.配置好,非常方便. 一般每新建一个wor ...