QT部分学习笔记

文章目录

  • 1.前言
  • 注意问题
  • 2.学习历程
    • 2.0 创建项目
  • 快捷键:
    • 2.1 创建按钮
    • 2.2 对象树
    • 2.3 调试输出
    • 2.4 QT坐标系
    • 2.5 信号和槽
  • 3.Qmainwindow
    • 3.1 窗口菜单栏创建
    • 3.2 工具栏
    • 3.3 状态栏
    • 3.4 铆接部件
    • 3.5 对话框
  • 4.

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,防止覆盖按钮1btn2->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.

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/328005.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法课程笔记——蓝桥云课第11次直播

算法课程笔记——蓝桥云课第11次直播

ORA-28575: unable to open RPC connection to external procedure agent

环境&#xff1a; Oracle 11.2.0.4x64 RAC AIX6.1版本SDE for aix oracle11g版本10.0 x64 sde配置情况如下&#xff1a; 检查oracle和grid用户下的$ORACLE_HOME/hs/admin/extproc.ora文件均包含有如下&#xff1a; SET EXTPROC_DLLSANY 两个节点sde下的user_libraries都正常…

leetcode.环形链表问题

目录 题目1 示例 解题思路 代码实现 补充 题目2 示例 解题思路 代码实现 题目1 该题链接&#xff1a;https://leetcode.cn/problems/linked-list-cycle/description/ 示例 解题思路 要创建两个指针一个是快指针(fast)&#xff0c;另一个慢指针(slow)。快指针走两步慢指…

【Android】Apk图标的提取、相同目录下相同包名提取的不同图标apk但是提取结果相同的bug解决

一般安卓提取apk图标我们有两种常用方法&#xff1a; 1、如果已经获取到 ApplicationInfo 对象&#xff08;假设名为 appInfo&#xff09;&#xff0c;那么我们获取方法为&#xff1a; appInfo.loadIcon(packageManager)// 返回一个 Drawable 对象2、 如果还没获取到 Applica…

必背!!2024年软考中级——网络工程师考前冲刺几页纸

距离软考考试的时间越来越近了&#xff0c;趁着这两周赶紧准备起来 今天给大家整理了——软考网络工程师考前冲刺几页纸&#xff0c;都是核心重点&#xff0c;有PDF版&#xff0c;可打印下来&#xff0c;每天背一点。 计算机总线分类 ①总线的分类&#xff1a;数据总线、地址总…

内网渗透瑞士军刀-impacket工具解析(二)

impacket工具解析之Kerberos认证协议 上一期我们介绍了impacket中ntlm协议的实现&#xff0c;在Windows认证中除了使用ntlm认证&#xff0c;还支持Kerberos认证协议&#xff0c;Kerberos认证也是Windows 活动目录中占比最高的认证方式。 什么是Kerberos协议&#xff1f; Kerb…

CSRF 攻击实验:更改请求方式绕过验证

前言 CSRF&#xff08;Cross-Site Request Forgery&#xff09;&#xff0c;也称为XSRF&#xff0c;是一种安全漏洞&#xff0c;攻击者通过欺骗用户在受信任网站上执行非自愿的操作&#xff0c;以实现未经授权的请求。 CSRF攻击利用了网站对用户提交的请求缺乏充分验证和防范…

英语学习笔记10——Look at ...

Look at … 看…… 词汇 Vocabulary fat adj. 胖的&#xff0c;丰富的 n. 脂肪 例句&#xff1a;他是个胖男孩。    He is a fat boy. 搭配&#xff1a;fat cat 有钱人&#xff0c;土豪 woman n. 女人 girl n. 女孩 madam n. 女士 man n. 男人 boy n. 男孩 sir n. 先生 …

jdk安装多个版本,但是java -version显示最早安装的版本,换掉Path或者JAVA_HOME不生效问题

问题一&#xff1a;当你的电脑上又多个jdk版本&#xff0c;如17 或者8时&#xff0c;使用命令行 java -version显示最早安装的&#xff0c;如下图所示&#xff1a;环境变量配置的17&#xff0c;但是命令行显示的是8。 原因&#xff1a;windows电脑装jdk17后 会在你的环境变量…

声纹识别在无人机探测上的应用

无人机在民用和军事领域的应用越来越广泛。然而&#xff0c;随着无人机数量的增加&#xff0c;"黑飞"现象也日益严重&#xff0c;对公共安全和隐私构成了威胁。因此&#xff0c;开发有效的无人机探测与识别技术变得尤为重要。及时发现黑飞无人机的存在进而对其型号进…

Springboot+Vue项目-基于Java+MySQL的民族婚纱预定系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

在浏览器执行js脚本的两种方式

fetch请求get 在浏览器执行http请求,可以使用fetch函数; fetch(“url”).then(response => response.text()) .then(data => console.log(JSON.parse(data)[‘status’])) .catch(error => console.error(error)) 直接返回json数据: fetch(“url”).then(response…

【Java】/*数组的定义与使用*/

目录 一、数组的定义 1.1 为什么要使用数组 1.2 什么是数组 1.3 数组的初始化 1.3.1 动态初始化 1.3.2 静态初始化 1.2.3 注意事项 三、遍历数组 3.1 用循环的方式遍历数组 3.2 用 for each 的方式遍历数组 3.3 用 Arrays.toString 的方式遍历数组 3.4 一些其他的…

【3dmax笔记】028:倒角的使用方法

一、倒角描述 在3dmax中创建倒角效果可以通过多种方法实现,以下是几种常见的方法: 使用倒角修改器。首先创建一个图形(如矩形和圆),然后对齐它们,将它们转化为可编辑样条线,并附加在一起,选择要倒角的边缘,然后使用倒角修改器来调整高度、轮廓等参数。使用倒角剖面修…

【稳定检索|投稿优惠】2024年医学、药学与生物工程国际会议(ICMPB 2024)

2024年医学、药学与生物工程国际会议&#xff08;ICMPB 2024&#xff09; 2024 International Conference on Medicine, Pharmacy, and Biotechnology 【会议简介】 2024年医学、药学与生物工程国际会议将于长沙召开。此次会议将汇聚全球医学、药学与生物工程领域的顶尖学者…

MIT 6.5840(6.824) Lab2:Key/Value Server 设计实现

1 实验要求 在本次 Lab 中&#xff0c;你将在单机上构建一个键/值服务器&#xff0c;以确保即使网络出现故障&#xff0c;每个操作也只能执行一次&#xff0c;并且操作是可线性化的。 客户端可以向键/值服务器发送三个不同的 RPC&#xff1a; Put(key, value) 、 Append(key,…

【Linux】进程间通信(一)---- 匿名管道

【Linux】进程间通信&#xff08;一&#xff09;---- 匿名管道 一.序1什么是进程间通信2.进程间通信的标准3.为什么需要进程通信 二.匿名管道1.原理2.使用3.四种情况4.五个特点 一.序 1什么是进程间通信 进程间通信 通信我们大致知道是啥&#xff0c;就是互相传递信息 那进程…

【软考】设计模式之组合模式

目录 1. 说明2. 应用场景3. 结构图4. 构成5. 优点6. 缺点7. java示例 1. 说明 1.将对象组合成树型结构以表示“部分-整体”的层次结构。2.Composite使得用户对单个对象和组合对象的使用具有一致性。3.组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式 …

德昂信息-Wyn助力构建HR人员信息分析看板

”葡萄城的Wyn商业智能软件产品为德昂信息提供了强大的支持&#xff0c;借助Wyn商业智能软件&#xff0c;可以通过可视化方式展示整个公司的人员信息及其分析看板。“ ——德昂信息技术(北京)有限公司 公司简介 德昂信息技术(北京)有限公司&#xff08;以下简称德昂信息&…

STM32_HAL_TIM_通用计时器_实现计时

项目思路 1使用定时器计数每秒一次 2使用一个变量记录定时器响应多少次 3使用UART将记录的次数发出 1STM32Cude设置 1配置时钟源 2打开UART 3打开TIM2 3.1界面介绍 3.2选项介绍 Slave Mode&#xff08;从模式&#xff09;&#xff1a;当设备被设置为从模式时&#xff0c…