QT部分学习笔记

1.前言

版本: 5.9.9

注意问题

  1. Qstring类型通多debug输出会自带引号,需要转为char* 类型,
    在这里插入图片描述

2.学习历程

2.0 创建项目

不要有中文路径和命名
在这里插入图片描述

  • main函数介绍:
    在这里插入图片描述
  • .pro文件
    在这里插入图片描述

快捷键:

注释  ctrl+/
运行

2.1 创建按钮

3 按钮控件常用API
3.1 创建 QPushButton * btn = new QPushButton
3.2 设置父亲 setParent(this)
3.3 设置文本 setText(“文字”)
3.4 设置位置 move(宽,高)
3.5 重新指定窗口大小 resize
3.6 设置窗口标题 setWindowTitle
3.7 设置窗口固定大小 setFixedSize

#include "mywidget.h"
#include <QPushButton>

myWidget::myWidget(QWidget *parent)
    : QWidget(parent)
{
    //创建第一个按钮
    QPushButton *btn=new QPushButton();
    btn->setParent(this);//设置父类,依附在其窗口
    btn->setText("first");//设置文本
    //btn->show();设置父类依附之后就不要在show了

    //创建第二个按钮
     QPushButton *btn2=new QPushButton("second",this);//直接设置父类和文本内容
     btn2->move(50,60);//移动按钮2,防止覆盖按钮1
     btn2->resize(50,30);//设置按钮大小

    resize(600,800);//设置背景窗口大小
    setFixedSize(600,800);//设置窗口固定大小
    setWindowTitle("第一个窗口");

}

myWidget::~myWidget()
{
}


2.2 对象树

在进行析构时,析构顺序与构造相反,后创建的先析构,但是是从父类找到子类,直到没有子类,开始从最后子类开始析构

  1. 在创建QObject对象时,可以提供一个其父对象,我们创建的这个QObject对象会自动添加到其父对象的children()列表。
     当父对象析构的时候,这个列表中的所有对象也会被析构。(注意,这里的父对象并不是继承意义上的父类!)

  2. Qt 引入对象树的概念,在一定程度上解决了内存问题。
     当一个QObject对象在堆上创建的时候,Qt 会同时为其创建一个对象树。不过,对象树中对象的顺序是没有定义的。这意味着,销毁这些对象的顺序也是未定义的。
     任何对象树中的 QObject对象 delete 的时候,如果这个对象有 parent,则自动将其从 parent 的children()列表中删除;如果有孩子,则自动 delete 每一个孩子。Qt 保证没有QObject会被 delete 两次,这是由析构顺序决定的。

在这里插入图片描述

2.3 调试输出

  1. 要包含 #include QDebug
  2. 使用: qDebug() << "输出内容"

2.4 QT坐标系

原点左上角:(0,0) x向右增加,y向下增加

2.5 信号和槽

请添加图片描述

  1. 实现连接 : connnect()
  2. 参数:
    1: 信号的发送者
    2:发送的信号(函数地址)
    3:信号的接收者
    4:处理信号的槽函数(函数地址)
  3. connect实现松散耦合,本来信号和槽之间相互独立

6.4 实现 点击按钮 关闭窗口的案例
6.5 connect(btn , &QPushButton::click , this , &QWidget::close );

  1. 例子:使用按钮1,发送点击信号, 接收者为当前窗口,槽函数为关闭当前窗口
    在上面按钮创建cpp下添加这一行代码:
    connect(btn,&QPushButton::clicked,this,&myWidget::close);
* 自定义信号和槽

7.1 自定义信号
7.1.1 写到 signals下
7.1.2 返回 void
7.1.3 需要声明,不需要实现
7.1.4 可以有参数 ,可以重载
7.2 自定义槽函数
7.2.1 返回void
7.2.2 需要声明 ,也需要实现
7.2.3 可以有参数 ,可以重载
7.2.4 写到 public slot下 或者public 或者全局函数
7.3 触发自定义的信号
7.3.1 emit 自定义信号

8 当自定义信号和槽出现重载
8.1 需要利用函数指针 明确指向函数的地址
8.2 void( Teacher:: * tSignal )( QString ) = &Teacher::hungry;
8.3 QString 转成 char *
8.3.1 .ToUtf8() 转为 QByteArray
8.3.2 .Data() 转为 Char *
8.4 信号可以连接信号
8.5 断开信号 disconnect
9 拓展
9.1 信号可以连接信号
9.2 一个信号可以连接多个槽函数
9.3 多个信号可以连接同一个槽函数
9.4 信号和槽函数的参数 必须类型一一对应
9.5 信号和槽的参数个数 是不是要一致?信号的参数个数 可以多于槽函数的参数个数
9.6 信号槽可以断开连接 disconnect

10 Qt4版本写法
10.1 connect( 信号的发送者, 发送的信号SIGNAL( 信号) ,信号接受者, 槽函数SLOT(槽函数) )
10.2 优点 参数直观
10.3 缺点 编译器不会检测参数类型

11 Lambda表达式
11.1 []标识符 匿名函数
11.1.1 = 值传递
11.1.2 & 引用传递
11.2 () 参数
11.3 {} 实现体
11.4 mutable 修饰 值传递变量 ,可以修改拷贝出的数据,改变不了本体
11.5 返回值 ->int {}

3.Qmainwindow

3.1 窗口菜单栏创建

在这里插入图片描述

3.2 工具栏

在这里插入图片描述

在这里插入图片描述

3.3 状态栏

在这里插入图片描述

3.4 铆接部件

在这里插入图片描述

3.5 对话框

在这里插入图片描述
在这里插入图片描述
上面创建到堆区防止一闪而过

在这里插入图片描述
在这里插入图片描述

4.

在这里插入图片描述

相关推荐

  1. Qt学习笔记(一)

    2024-05-15 13:18:12       39 阅读
  2. Qt学习笔记(二)

    2024-05-15 13:18:12       31 阅读
  3. Qt5学习笔记

    2024-05-15 13:18:12       27 阅读
  4. QT学习笔记2--QT简述

    2024-05-15 13:18:12       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-15 13:18:12       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-15 13:18:12       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-15 13:18:12       82 阅读
  4. Python语言-面向对象

    2024-05-15 13:18:12       91 阅读

热门阅读

  1. 三数之和算法题(LeetCode)

    2024-05-15 13:18:12       29 阅读
  2. Spring Boot学习

    2024-05-15 13:18:12       30 阅读
  3. fastapi+vue实现导出功能

    2024-05-15 13:18:12       31 阅读
  4. 深入理解Qt的信号与槽机制

    2024-05-15 13:18:12       25 阅读
  5. Python3 笔记:range() 函数

    2024-05-15 13:18:12       29 阅读
  6. 【大数据面试题】27 讲下Doris的物化视图

    2024-05-15 13:18:12       33 阅读
  7. CentOS常用命令速览:把握Linux服务器的脉动

    2024-05-15 13:18:12       25 阅读