一、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. 【转载】CentOS中crontab定时计划任务的使用

    转载自:http://blog.csdn.net/testcs_dn/article/details/48780971 概述 利用“任务计划”,可以将任何脚本.程序或文档安排在某个最方便的时间运行.通 ...

  2. Chapter 2 Open Book——13

    "People in this town," he muttered. "Dr. Cullen is a brilliant surgeon who could prob ...

  3. 对html中iframe的研究

    虽然平时不怎么用iframe,但经常在网上听一些前辈说iframe怎样怎样,今天索性对iframe来个大研究,那样就不必去记那些条条框框了,自己体验一遍比看什么都好. 创建两个文件一个index.ht ...

  4. dhcp服务器(一)

    DHCP服务概述: 名称:DHCP -Dynamic Host Configuration Protocol动态主机配置协议. 功能:DHCP(Dynamic Host Configuration P ...

  5. 【IT笔试面试题整理】链表

    如何准备 Linked list questions are extremely common These can range from simple (delete a node ina linke ...

  6. 手机App安全性测试初探

    目前手机App测试还是以发现bug为主,主要测试流程就是服务器接口测试,客户端功能性覆盖,以及自动化配合的性能,适配,压测等,对于App安全性测试貌似没有系统全面统一的标准和流程,其实安全性bug也可 ...

  7. Deep learning with Python 学习笔记(2)

    本节介绍基于Keras的CNN 卷积神经网络接收形状为 (image_height, image_width, image_channels)的输入张量(不包括批量维度),宽度和高度两个维度的尺寸通常 ...

  8. AngularJS学习笔记(一)走近AngularJS

    什么是AngularJS AngularJS是一款优秀的前端JS框架,是Google多款产品之一,简称ng. ng有着诸多特性,最为核心的是:MVVM.模块化.自动化双向数据绑定.语义化标签.依赖注入 ...

  9. Shiro眼皮下玩ajax,玩出302 Found

    2017/06/14这一天,是我玩Shiro安全框架最刻骨铭心的一天.因为Shiro今天给我深深的补了一刀,在这儿我也给各位补一刀吧,其实问题很简单,解决方式也极其简单,只是给各位分享一下这个错误,纯 ...

  10. Java - Iterator源码解析

    java提高篇(三十)-----Iterator 迭代其实我们可以简单地理解为遍历,是一个标准化遍历各类容器里面的所有对象的方法类,它是一个很典型的设计模式.Iterator模式是用于遍历集合类的标准 ...