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表达式

相关推荐
把我格子衫拿来9 小时前
VTK 9.5 与 Qt 6 联合开发:从嵌入三维窗口到可维护的桌面架构
c++·python·qt·vtk·三维可视化
优选资源分享9 小时前
PicGo v3.0.3 新版 | 开源免费图床工具
javascript·笔记·electron
星恒随风11 小时前
Linux线程概念详解:从分页存储、页表、MMU与TLB,深入理解线程和进程的区别与联系
linux·运维·笔记·学习·状态模式
qq_2842740511 小时前
数控机床编程基础与坐标系:编程六步流程、程序号/程序段/程序字格式,与右手定则下车床铣床XYZ轴判定(含考点)
笔记·学习·自动化·制造
问心无愧051311 小时前
[SUCTF 2019]EasySQL
笔记
ss27311 小时前
PG实战笔记 | 09 PostgreSQL psql客户端基本操作
数据库·笔记·postgresql
xxwl58511 小时前
区域赛分类题解
c++·笔记·学习·算法
成都蜀味缘餐饮技术培训学校14 小时前
油炸串串技术培训实战指南,核心食材选购与预处理标准
数据仓库·经验分享·笔记·课程设计·微信公众平台
摇滚侠14 小时前
《大模型应用开发实践:基于 Spring AI+DeepSeek 实现》第 11 章 大模型技术概览 阅读笔记 1
人工智能·笔记·spring
把我格子衫拿来15 小时前
VTK 与 Qt 的 CMake 工程怎么组织?模块、工具链与二进制兼容排错
c++·qt·vtk·cmake·工程实践