QT7_视频知识点笔记_1_ 基础知识(帮助文档),窗口(内存回收机制),信号槽(传参),Lambda表达式

1.QT基础

QT是一个框架,不用像C++语言自己从底层写,需要的功能可以先看是否QT库中有直接可使用的

帮助文档的使用:F1跳入帮助文档,

QT中常用的类:比如QPushbutton,查看帮助文档则可知道对应的函数和解决方案

2.窗口

在窗口widget中创建一个按钮pushbutton

cpp 复制代码
private:
    QPushButton pushbutton1;		//方式1
    QPushButton *pushbutton2;		//方式2,常用这种
    //方式2是一个指针,使用时需要new初始化,

在构造函数中实现:

cpp 复制代码
//方式1
    pushbutton1.setParent(this);
    pushbutton1.setText("pushbutton1");

    //方式2
    pushbutton2 = new QPushButton("pushbutton2",this);//可F1在帮助文档中查看其构造函数:QPushButton(QWidget *parent = nullptr)为指定父窗口
    //pushbutton2->show();    //如果没有指定父窗口,则需要show使其显示

(窗口可通过show进行显示,hide进行隐藏)

相关的内存回收机制

cpp 复制代码
一般new一个对象之后需要进行释放,但是QT中如果添加了父对象则不用,父对象析构时会对其附着于上的子对象进行释放(对象)
//==》pushbutton2 不用进行另外的释放
//条件1:内存的自动回收机制适用于从QObject派生的类,窗口类(例如QWidget都是从QObject派生的,所以自动回收机制适用于所有窗口类)
//条件2:需要指定父类(先析构孩子,再析构自己)

新建一个MyButton类,继承自QPushButton,参数(QWidget *parent = nullptr)可以不进行改变。

3.信号槽

信号发出者,信号,信号接收者,处理的槽函数

信号查询:F1帮助文档,找Signals的部分,如果没有找父对象(Inherits)的部分是否有Signals

槽函数查询:与信号类似

槽函数和回调函数???:回调函数:不马上执行,当满足条件时才执行

举例:对应上面提到的窗口中按钮创建的不同方式

cpp 复制代码
    //信号槽
    //connect(&pushbutton1,&QPushButton::clicked,this,&Study_CarManager::close);
    connect(pushbutton2,&QPushButton::clicked,this,&Study_CarManager::close);

自定义信号槽(信号槽传参 ),槽函数的参数不能多于信号的参数(多出来的参数无法获取),槽函数可以重载

.h文件:

cpp 复制代码
signals:
    void signal1(int num1,int num2);

private:
    void Myslot1(int num1,int num2);

.cpp文件:

cpp 复制代码
//自定义带参数信号槽传参,注意也可以是其他类中发出信号,在此槽函数中进行处理
    //如果信号没有重载可以用这种方式
    connect(this,&Study_CarManager::signal1,this,&Study_CarManager::Myslot1);

    //如果信号出现重载,使用一下方法:
    void (Study_CarManager::*MySigsub)(int,int) = &Study_CarManager::signal1;
    connect(this,MySigsub,this,&Study_CarManager::Myslot1);


    emit signal1(100,500);


//以上为构造函数中
void Study_CarManager::Myslot1(int num1, int num2)
{
    //qdebug 自定义的槽函数
    qDebug()<<"Myslot1:num1"<<num1<<"num2"<<num2;
}

4.Lambda表达式(隐式函数,没有函数名)

匿名的函数对象:

cpp 复制代码
//"="为拷贝外部数据的地址
全部:[]() mulable exception ->int {}     -------->  mulable值拷贝时默认为const不可改变,加之后变为可变可赋值  ;exception 为抛出异常;->int为返回值类型。如果整个函数只有一个return则不用加改返回值类型,如果有多个return的地方则需要加。

[=](int num,QString str){
	
}
//"&"为引用外部数据的地址
[&](int num,QString str){
	
}
//如果传入具体参数:[b]则大括号内只能使用外部的该参数

如果函数内容不复杂则可不用重新定义新的函数,直接使用lambda表达式

相关推荐
熙曦Sakura16 分钟前
完全竞争市场
笔记
dr李四维1 小时前
iOS构建版本以及Hbuilder打iOS的ipa包全流程
前端·笔记·ios·产品运营·产品经理·xcode
重生之我是数学王子2 小时前
QT基础 编码问题 定时器 事件 绘图事件 keyPressEvent QT5.12.3环境 C++实现
开发语言·c++·qt
Komorebi.py5 小时前
【Linux】-学习笔记05
linux·笔记·学习
亦枫Leonlew5 小时前
微积分复习笔记 Calculus Volume 1 - 6.5 Physical Applications
笔记·数学·微积分
冰帝海岸10 小时前
01-spring security认证笔记
java·笔记·spring
----云烟----11 小时前
QT中QString类的各种使用
开发语言·qt
小二·11 小时前
java基础面试题笔记(基础篇)
java·笔记·python
wusong99914 小时前
mongoDB回顾笔记(一)
数据库·笔记·mongodb
猫爪笔记14 小时前
前端:HTML (学习笔记)【1】
前端·笔记·学习·html