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.hqwc.cn/news/702410.html

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

相关文章

Nginx配置到系统中

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 Nginx(“engine x”…

【C语言每日题解】三题:回文检查、刘备 关羽 张飞三人过年放鞭炮、约瑟夫环问题(犹太人死亡游戏)(难度up,推荐)

&#x1f970;欢迎关注 轻松拿捏C语言系列&#xff0c;来和 小哇 一起进步&#xff01;✊ &#x1f308;感谢大家的阅读、点赞、收藏和关注 &#x1f970;希望大家喜欢我本次的讲解 &#x1f31f;非常推荐最后一道题 &#x1f339; 犹太人死亡游戏&#xff0c;建议观看 &…

一文全解聚碳酸酯PC材料在汽车灯罩制造中的诸多显著优势!汽车车灯的灯罩如果破损破裂破洞了要怎么修复?

聚碳酸酯PC材料在汽车灯罩制造中具有诸多显著优势。除了优异的抗冲击性、透明性、耐热性和稳定性外&#xff0c;还有以下一些重要优势&#xff1a; 出色的光学性能&#xff1a;PC材料的光学性能优异&#xff0c;能够确保灯罩内的光源均匀分布&#xff0c;减少光斑和眩光&#…

C++的数据结构(八):线段树

线段树是一种高效的树形数据结构&#xff0c;用于处理区间查询和区间更新问题。它的基本思想是将一个大的区间分解为若干个小的、不相交的区间&#xff0c;每个小区间对应线段树中的一个节点。线段树的每个节点保存了该区间的信息&#xff08;如区间最大值、区间和等&#xff0…

尝试使用官方jailhouse-images仓库运行jailhouse

jailhouse 的官方 demo 演示仓库 Demo and testing images: https://github.com/siemens/jailhouse-images 通过jailhouse 的官方 demo 演示仓库&#xff0c;可以直接编译出带有部署有jailhouse程序的Linux镜像&#xff0c;有多个目标平台的Linux镜像可选&#xff0c;也有在qe…

C语言实训项目源码-02餐厅饭卡管理系统-C语言实训C语言大作业小项目

C语言餐厅饭卡管理系统 一、主要功能 主要功能模块 页面名称 实现功能 负责人 进入页面 进入程序 主函数 系统主要功能 修改密码函数 修改密码 充值&#xff0c;显示函数 饭卡充值与信息显示 购买饭菜…

SpringBoot:缓存

点击查看SpringBoot缓存demo&#xff1a;LearnSpringBoot09Cache-Redis 技术摘要 注解版的 mybatisCacheConfigCacheableCachePut&#xff1a;既调用方法&#xff0c;又更新缓存数据&#xff1b;同步更新缓存CacheEvict&#xff1a;缓存清除Caching&#xff1a;定义复杂的缓存…

Python-VBA函数之旅-vars函数

目录 一、vars函数的常见应用场景 二、vars函数使用注意事项 三、如何用好vars函数&#xff1f; 1、vars函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a;https://myelsa1024.blog.csdn.net/ 一、vars函数…

业务系统加固和安全设备加固

业务系统加固 业务系统包含哪些系统? 业务系统漏洞面临的风险 1web风险 2漏洞扫描&#xff0c;端口扫描 3系统漏洞 4逻辑漏洞 5 信息泄露 6拒绝服务 7口令爆破 加固方式&#xff1a; 在风险加上修复 1web漏洞&#xff1a; 包括csrf,xss&#xff0c;口令破解等等 修…

走进Java接口测试之多数据源切换示例

文章目录 一、前言二、demo实现2.1、开发环境2.2、构建项目2.3、配置数据源2.4、编写配置文件2.5、编写Dao层的mapper2.6、编写实体成层2.7、编写测试类2.8、验证结果 三、多数据源 demo 实现3.1、配置数据源3.2、增加pom文件3.3、修改数据源读取方式&#xff1a;3.4、增加动态…

图片转base64【Vue + 纯Html】

1.template <el-form-item label"图片"><div class"image-upload-container"><input type"file" id"imageUpload" class"image-upload" change"convertToBase64" /><label for"imageU…

如何配置测试环境?(非常详细)零基础入门到精通,收藏这一篇就够了

测试环境配置是一个关键的步骤&#xff0c;用于确保软件在开发过程中能够得到全面的测试&#xff0c;以提高软件的质量、性能和安全性。 测试环境配置的详细步骤&#xff1a; **确定测试环境需求&#xff1a;**在开始测试环境搭建之前&#xff0c;首先需要明确测试环境的需求…