day01

发布时间 2023-09-18 18:41:45作者: 歪爱慕外

一、Qt简介

1、什么是Qt
  • 图形用户界面应用程序开发框架,是底层应用编程接口进行了面向对象的封装

  • 是一套基于C++语言的库,专注但不限于图形用户界面的程序开发,还可以进行系统调用、网络编程、数据库、2D\3D图形处理

2、为什么选择Qt
  • 居于C++语言,使用简单、易用,有优秀的跨平台特性,支持Linux系统、Windows系统、MacOS系统、iOS系统、Android系统

二、Qt环境以及工具

  • Qt助手:Qt参考手册,Qt所有类、函数,相当于man手册

  • Qt构造器:负责对源文件、头文件、界面文件进行解析并自动生成Makefile文件

    • qmake

  • Qt设计师:对于应用程序开发而言,最开始、最纯粹的方式是通过C/C++代码来编写整个项目,但是这种方式费时费力,所有一般不会这样去做界面程序,而是通过画图、鼠标操作方式,自动生成对应的界面代码,所见即所得,设计完成后会得到一个xxx.ui界面文件

  • Qt界面编译器:负责把Qt界面文件翻译成C++编译器认识的C++代码

  • Qt创造器 = Qt助手+Qt构造器+Qt设计师+Qt界面编译器+文本编辑器,一个集成开发环境

三、第一个Qt程序

    QApplication a(argc, argv);     //创建Qt应用程序对象
Widget w; //创建窗口对象

QLabel* lab = new QLabel(&w);//创建标签对象,并放入窗口w中
lab->setText("Hello Qt");//设置文本内容
// lab->show(); //显式标签控件
w.show();

return a.exec(); //运行Qt程序

四、Qt创造器的常用快捷键

  • Ctrl+左击/F2 跳转到定义位置

  • Alt+Enter 对光标处的函数声明进行快速定义

  • Ctrl+i 快速调整代码格式

  • Ctrl+/ 注释、取消注释

  • Ctrl+f 搜索、替换

  • Ctrl+shift+r 批量修改标识符,Enter键确认

  • F4 在自定义的类声明、定义文件中切换

  • F1 查看光标处Qt类的帮助手册

  • Alt+0 显示或隐藏侧边栏

  • shift+Alt+u 小写转大写

  • Alt+u 大写转小写

五、Qt帮助手册

  • Header:需要导入的头文件

  • qmake:需要依赖的模块,在xxx.pro文件中添加

  • Inherits:父类

  • inherited by:子类

  • Properties:成员变量、父类中的成员变量

  • Public Function:公开属性的成员函数

  • Reimplemented Public Function:公开属性的虚函数

  • Protected Function:保护属性的成员函数

  • Reimplmented Protected Function:保护属性的虚函数

  • Public Slots:公开属性的槽函数

  • Protected Slots:保护属性的槽函数

  • Signals:该类能够自己发出的信号

  • Detailed Description:对该类的详细说明

六、窗口容器

通过Hello案例,每个控件例如标签控件都需要有显示容器来承载,如果不提供Qt会单独提供,因此想要一个整体的界面,就必须把需要的控件集合在同一个窗口中,这种就是Qt的窗口容器

  • QMainWindow 主窗口容器

    • 通常包含标题栏、菜单栏、工具栏、主窗体组成

  • QDialog 对话窗口

    • 会自带一些交互类的控件

  • QWidget 纯粹的窗口容器

    • 以主窗体为主,它是QMainWindow和QDialog的父类

常用设置:
  • resize(w,h) 设置窗口大小

  • move(x,y) 设置窗口出现位置,以左上角为原点

如何把控件通过代码放入窗口:

  • 创建窗口容器对象

    • QWidget* w = new QWidgit;

  • 创建控件时,把该窗口对象地址传递给该控件构造函数

    • QLabel* lab = new Qlabel(w);

  • 只需要显示窗口,窗口中所有控件默认也会显示

    • w->show();

七、Qt中的字符串和输出数据

QString类,具备string类的所有功能

它有一系列的to函数,可以方便地转换成其他类型数据

  • 终端输出数据:

    • C/C++中的printf/scanf/cin/cout还可以继续使用

八、信号和槽

1、什么是Qt的信号?
  • 当用户或者系统满足一定条件或触发某些动作时,导致窗口或者控件、类发生一些改变时,它们就会发射出一个对应的信号

  • 信号可以预先连接一个特殊的函数,当信号被触发时,就会自动调用该函数,这样的函数就称为槽函数

    • 例如QPushButton中的单击信号clicked信号

2、槽函数
  • 与普通函数一样,也可以被手动调用,但是一般不会这样调用,而是通过连接信号后,由信号来自动触发

3、信号和槽的连接
  • 信号和槽必须建立connect连接后,才会触发槽函数

QMetaObject::Connection QObject::connect(const QObject *sender, 
const char *signal, const QObject *receiver, const char *method,
Qt::ConnectionType type = Qt::AutoConnection)

sender:信号发出的控件,必须时QObject的子类,例如QPushButton

signal:要连接的信号的签名

通过SIGNAL(信号名()) 把信号转换成信号签名

receiver:信号的接收者,必须是QObject的子类

method:要绑定的槽函数的签名

通过SLOT(槽函数())把槽函数转成槽函数签名

 

connect函数属于OBject的公开成员函数:

如果在类外调用 需要声明OBject::connect

QObject::connect(but,SIGNAL(clicked()),&w,SLOT(on_Pb_clicked()));