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/qt4目录下。
    • 静态库需要重新下载源手动编译。

三、第一个Qt程序

  1. hello,QT QApplication QLabel

    • 编译源代码
    • 生成项目文件:qmake -project
    • 生成编译脚本: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:对本类的详细说明,使用方法,调用的上下文注意事项,有些类会使用demo。

四、中文处理

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

五、信号和槽

  1. 信号
    • 当用户或系统触发一个动作,导致某个窗口发生变化,该控件就会发射一个信号,信号就可以调用一个函数,必要时还可以附加参数。
    • QPushButton控件中就有clicked(void)信号。
    • 槽就是一个普通的类成员函数,它可以是公有的、私有的、保护的,可以被重载也可以被覆盖,其参数、返回值可以是任意类型,也可以被直接调用。
    • 与普通函数的区别就是它可以被信号触发,自动执行。
    • 如:窗口控件QWidget中默认就有 close(void)槽函数
  2. 信号和槽的连接
    • 注意:QObject是Qt中所有类的父类
    • #include<QObject>
    • bool QObject::connect(const QObject* sender//信号发送者,const char* signal//信号签名,const QObject* receiver//信号的接受者,const char* method//槽函数签名)
    • SIGNAL()将信号函数签名转换成字符串
    • SLOT()将槽函数签名转换成字符串

六、窗口容器

  • 一个控件就是一个窗口,要想把所有控件集合在同一个窗口中,就需要把这些控件束缚在同一个容器中,这种容器就叫窗口容器。
    1. QMainWindow
      • 主窗口容器,通常由标题栏、菜单栏、工具栏、状态栏以及中央显示区组成。
    2. QDialog
      • 对话框窗口容器,管理多个不同的交互式控件。
    3. QWidget
      • 纯粹的窗口容器,它是QMainWindow和QDialog父类。
  • 常用的设置有:
    1. resize(w,h),设置窗口大小
    2. move(x,y)设置窗口位置
  • 创建控件时把容器对象的地址给控件,就可以把控件放入到容器中

七、Qt创造器的使用

  1. 打开Qt创造器

    • 在终端执行:qtcreator,右键锁定到启动器
  2. 创建项目

    • 文件->新建文件或工程->Qt控件项目->QtGui应用->填写项目名称(不要使用中文)->桌面->选择窗口容器->设置类名、头文件、源文件名->选择是否创建界面文件(设置界面文件名).
  3. 窗口类的构成:

    • mainwindow.ui 文件会自动生成 ui_mainwindow.h(在Qt创造器中不可见).
    • ui_mainwindow.h头文件当中会自动生成 Ui_MainWindow类,该类中会包含所有mainwindow.ui文件中所画的控件
    • 在ui_mainwindow.h头文件中会在Ui名字空间自动创建MainWindow,Ui_MainWindow会被MainWindow继承
    • mainwindow.h头文件中会自动创建MainWindow类,默认继承QMainWindow,会有Ui::MainWindow* ui成员,它里面有界面文件中所有的控件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值