一、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. Linux信号和trap命令的使用

    目录 信号介绍 信号列表 控制信号 Ctrl+c显示指定内容 使Ctrl+c无任何操作 处理多个信号 处理所有信号 恢复信号 实现跳板机(实例) 信号介绍 运行Shell脚本时,如果按下快捷键Ctrl ...

  2. Tomcat学习总结(8)——Tomcat+Nginx集群解决均衡负载及生产环境热部署

    近日,为解决生产环境热部署问题,决定在服务器中增加一个tomcat组成集群,利用集群解决热部署问题. 这样既能解决高并发瓶颈问题,又能解决热部署(不影响用户使用的情况下平滑更新生产服务器)问题. 因为 ...

  3. Docker 使用官方镜像

    Docker 使用官方镜像 如何使用官方镜像 Docker 中国官方镜像加速可通过 registry.docker-cn.com 访问.目前该镜像库只包含流行的公有镜像,而私有镜像仍需要从美国镜像库中 ...

  4. Navicat备份、还原mysql数据库

    注:本文为原创,转载请附带链接:https://www.cnblogs.com/stm32stm32

  5. React多页面应用脚手架-v1.3.0

    react-multi-page-app是一个基于react和webpack的多页面应用架构,通过编译生成对应目录结构清晰的静态页面,实现多页面便捷开发维护.1.3.0 版本对项目整体做了一个全面的升 ...

  6. 浅析libuv源码-获取精确时间

    在Timer模块中有提到,libuv控制着延迟事件的触发,那么必须想办法精确控制时间. 如果是JS,获取当前时间可以直接通过Date.now()得到一个时间戳,然后将两段时间戳相减得到时间差.一般情况 ...

  7. 以ORM的思路来从Excel文件中读取JSON数据列表

    1.一个常见的问题就是如何读取excel. 这里面有几个分支的问题,一个是如何使用poi读取excel,网上例子很多,但是这只解决了第一步.如何将excel读取入一定的数据结构这是第二个问题,还有就是 ...

  8. Mysql技能之【性能优化方案】

    两个SHOW命令 Mysql服务状态 SHOW GLOBAL STATUS; Mysql配置信息 SHOW VARIABLES: 慢查询 show variables like '%slow%'; s ...

  9. 在ASP.NET MVC中使用Grid.mvc

    很久没有写ASP.NET的博文了,专心工作嘛,今天写一点MVC的博文,也是自己练习来的,是使用grid.mvc来显示数据. 首先打开Manage Nuget Packages,搜索grid.mvc并安 ...

  10. 查询Sql Server数据库对象结构

    查询Sql Server数据库对象结构 查询数据库 查询架构 查询表 查询列 查询存储过程 查询视图 1.查询某一服务器下所有数据库 select t.[name] as 数据库 from sys.d ...