Qt解析原理

一、Qt简介

1、Qt是什么
	图形用户程序框架,是对底层应用编程接口API面向对象的封装。
	是一套基于C++语言的类库,专注但不局限于图形用户界面的开发,也可以进行系统调用、网络编程、数据库、2D/3D图形处理。
	特点:跨平台,支持Linux,windows、MacOS、iOS、Android等操作系统。
2、为什么选择Qt
	基于C++语言,简单、易用、面向对象(针对GTK)
	优良的跨平台特性(针对MFC),工控、嵌入式	

二、Qt环境与编译工具

1、工具
	Qt助手:Qt参考文档,涉及了Qt中的每一个类和函数,是Qt开发的必备手册,在终端可以通过assistant命令启动。
	Qt构建器:他负责对源文件、头文件、界面文件进行解析生成编译脚本。
		qmake -project 根据当前目录里的文件,生成项目配置文件,xxx.pro
		qmake 根据xxx.pro文件生成Makefile脚本
	Qt设计师:对于带界面应用程序来说,最纯粹的方式是通过C/C++代码来编写整个项目,但这种方式费时又费力,所以我们一般不这样做界面,而采用一种画图的方式,自动生成对应的代码,所见即所得。
	Qt界面编译器:它负责把Qt设计师设计出的界面文件编译成C++代码。
		uic xxx.ui -o xxx.h 把界面文件编译成C++类。
	Qt创造器:Qt助手+Qt构建器+Qt设计师+Qt界面编译器+文本编辑器就等于Qt创建器,集成开发环境。
2、头文件和库
	Qt安装好之后会在安装目录下创建一个/usr/include/qt4目录,我们所使用的头文件都在这个目录下。
	共享库安装在/usr/lib/i386-linux-gnu/qt4和/usr/lib/qt4目录下。
	静态库需要重新下载源手动编译。		

三、第一个Qt程序

1、Hello,Qt。
	编译源代码
	生成项目文件:qmake -project -> hello.pro
	生成编译脚本:qmake ->Makefile
	编译:make
	运行:./hello
2、帮助手册
	Public Types:访问权限是 public 的成员。
	Properties:访问权限是 private 这一类的成员都get/set函数。
	Public Functions:访问权限是 public 的成员函数。
	Public Slots:访问权限是 public 的槽函数,它可以像成员函数一样使用,但它可以与信号连接(与signal函数绑定一个信号与函数一样),区别是Qt的信号可以自定义。
	Signals:信号,注意:不是函数,通过emit发送,会自动执行与它连接的槽函数。
	Static Public Members:静态公有成员函数,这类函数与对象无关,管理的对象的公共资源。
	Protected Functions:访问权限是 protected 的成员函数
	Macros:与本类相关的宏定义
	Detailed Description:对本类的详细说明,使用方法,调用的上下文注意事项,有些类会有使用dome。

四、中文处理

注意:在Qt4.8中默认不支持 utf-8 字符编码,因此使用中文时会出现乱码。
内部编码与外部编码:
	Qt的应用程序的控件内部所使用的都utf-16,这叫做应用程序的内部编码,而我们通过终端,控制输入的字符串叫外部编码。
	
QTextCodec *codec = QTextCodec::codecForName("utf-8");
// 告诉Qt本地系统字符编码
QTextCodec::setCodecForLocale(codec);
// 告诉Qt程序中所使用的字符串的字符编码
QTextCodec::setCodecForCStrings(codec);
// 告诉Qt外部的字符编译
QTextCodec::setCodecForTr(codec);

五、信号和槽

1、信号
当用户或系统触发一个动作,导致某个窗口发生变化,该控件就会发射一个信号,信号就可以调用一个函数,必须时还可以附加参数。
如:QPushButton 控件中就有 clicked(void) 信号。
2、槽
槽就一个普通的类成员函数,它可以是公有的、私有的、保护护的,可以被重载也可以被覆盖,其参数、返回值可以是任意类型,可以被直接调用。
与普通函数的区别就是它可以被信号触发,自动执行。
如:窗口控件QWidget中默认就有 close(void) 槽函数。

3、信号和槽的连接
注意:QObject是Qt中所有类的父类
bool QObject::connect (
	const QObject * sender, // 信号发送者
	const char * signal, // 信号签名字符串,复制或使用自动提示
	const QObject * receiver, // 信号的接收者
	const char * method); // 槽函数签名字符串,复制或使用自动提示
	
	SIGNAL() 将信号函数签名转换成字符串
	SLOT() 将槽函数签名转换成字符串

六、窗口容器

从心上案例中可以看出,一个控制就一个窗口,要相把所有控件集合在同一个窗口中,那么就需要把这些控件束缚在同一个容器中,这种容器就叫窗口容器。
1、QManWindow
主窗口容器,通常由标题栏、菜单栏、工具条、状态栏以及中央显示区组成。	2、QDialog
对话框窗口容器,管理多个不同的交互式控件。
3、QWidget
纯粹的窗口容器,它是QManWindow和QDialog父类。

常用的设置有:
	resize(w,h) 设置窗口的大小
	move(x,y) 设置窗口的位置

创建控件时把容器对象的地址给控制,就可以把控件放入到容器中。

七、Qt创造器的使用

1、打开Qt创造器
	在终端执行:qtcreator,右键锁定到启动器。
2、创建项目
	文件->新建文件或工程->Qt控件项目->Qt Gui应用->填写项目名称(不要使用中文)->桌面->选择窗口容器->设置类名、头文件名、源文件名->选择是否创建界面文件(设置界面文件名)。
3、窗口类的构成:
	mainwindow.ui 文件会自动生成 ui_mainwindow.h(在Qt创造器中不可见)。
	ui_mainwindow.h 头文件中会自动生成 Ui_MainWindow类,该类中会包含所有mainwindow.ui文件中所画的控件。
	在ui_mainwindow.h头文件中会在Ui名字空间中自动创建MainWindo类,Ui_MainWindow会被MainWindow类继承。
	mainwindow.h头文件中会自动创建MainWindow类,默认继承QMainWindow,会一个默认的成员Ui::MainWindow *ui,它里面有所o界面文件中的控件。

八、Qt常用控件

QLabel:标签控件,用来显示简单的文本,在界面上只读的
	setText 设置显示内容
	text 获取标签上的字符串,返回值是QString
QPushButton:按钮控件
	同样具有setText、text 
	重要的功能是 单击信号 clicked(),也有双击、悬停、按下、弹起信号。
QRadioButton:单选按键,同窗口下只能有一个被选中
	重要功能是选中和取消选中信号
QLineEdit:单行输入文本框
	常用操作是获取它的输入内容
QTextEdit:多行输入文本框
	常用于输入大段文件,输入的内容可以换行,自带滚动条。
QComboBox:下拉输入框
	它输入的内容只能通过下接按键选择,只防止用户输入错误常用解决方法。
QTextBrower:多行文本显示,支持富文本显示。
	在界面上是只读的,文字可以设置字号,字体,颜色,加粗,对齐等操作。
QGroupBox:分组框,可以放入一个控制统一管理。
	最常用的是放入QRadioButton按钮,一组的按钮只能有一个被选中。
QxxxSilder:滑块
	有水平、垂直滑块,也可以当进行条使用。
QSpinBox:数字滑块
	与Silder的用法基本一致,只它是以数字显示。
	Silder的SpinBox主要操作是:初值、最大值、进步值
	即可以用来显示,也可以用来设置。	

九、Qt创造器常用快捷键及操作

快捷键:
	Alt+0:显示/隐藏侧边栏
	Ctrl+e 松开后按0:删除所有的分割窗口
	Ctrl+e 松开后按1:删除当的分割窗口
	Ctrl+e 松开后安2:水平分割窗口
	Ctrl+e 松开后安3:垂直分割窗口
	Ctrl+B+S:保存所有文件并编译执行
	Ctrl+B:编译执行
	Ctrl+R:运行项目
	Ctrl+/:注释/取消注释
	Ctrl+I:自动缩进选中的代码
	Ctrl+Shift+R:批量修改变量名
	Ctrl+F:搜索、替换
	Ctrl+单击:跳转到定义位置
	Shift+F2:声明与定义之间进行切换
	Alt+Shift+u:小写转换成大写
	Alt+u:大写转换成小写
	F1:光标定位类或对象上,打开对类的帮助手册
	F4:头文件与源文件之间快速切换
已标记关键词 清除标记
<p> 1.带领你学习QT5/C++,<span style="color:#FF0000;"><strong>从开发环境(QTCreator和VS2015两种)</strong></span>搭建到项目实战,从入门到精通。 </p> <p> 2.所有章节均有理论知识介绍、接口讲解、实例代码讲解,讲解过程中不断穿插老师在开发过程中遇到的问题及解决方法(<span style="color:#FF0000;"><strong>可以下载所有的电子课件与源码</strong></span>)。 </p> <p> 3.本阶段主要完成Qt开发环境搭建、<span style="color:#00B050;"><strong>基于Widget的图形控件、布局管理、容器类、QT事件处理、QSS、QML</strong></span>等几个方面知识的学习 </p> <p> 4.项目实战部分包括:<span style="color:#E36C09;"><strong>计算器、CRM、视频播放器、视频加密器</strong></span>、等。 </p> <p> 5.通过学习qt框架,进一步加深了对<span style="color:#FF0000;"><strong>C++设计模式</strong></span>的理解。可以<span style="color:#00B050;"><strong>真正投入到实战中</strong></span>,能做基于QT跨平台功能强大的界面程序。 </p> <p> ---------------------------------------- </p> <p> 第1章 Qt开发环境搭建及使用(VS2015及Qt Creator)<br /> 第2章 Qt的HelloWorld(GUI)及剖析<br /> 第3章 Qt信号槽使用及其原理<br /> 第4章 Qt容器类<br /> 第5章 Qt窗口基类QWidget<br /> 第6章 Qt应用程序主窗口<br /> 第7章 Qt基于Widget的控件<br /> 第8章 Qt布局管理<br /> 第9章 Qt事件<br /> 第10章 QSS快速入门<br /> 第11章 Qml快速入门<br /> 第12章 Qt项目实战之计算器<br /> 第13章 Qt项目实战之信息管理系统<br /> 第14章 Qt项目实战之视频播放器<br /> 第15章 Qt项目实战之视频加密器<br /> 第16章 Qt项目实战之视频转码器<br /> 第17章 Qt面试题分析与讲解<br /> 第18章 Qt小白是怎么炼成大牛的之中级篇概览<br /></p><div> <br /></div> <p> <br /></p> <p> <br /></p> <p> <br /></p> <p> <br /></p> <p> <br /></p> <p> <br /></p> <p> <br /></p> <p> <br /></p> <p> <br /></p> <p> <br /></p> <p> <br /></p> <p> <br /></p> <p> <br /></p> <p> <br /></p> <p> <br /></p> <p> <br /></p> <p> <br /></p> <p> <br /></p> <p> <br /></p>
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页