QT学习(1)——创建第一个QT程序,信号和槽,打开关闭窗口的案例

在这里插入图片描述

目录

  • 引出
    • 规范和帮助文档
    • 创建第一个Qt程序
    • 对象树概念
    • 信号signal槽slot
    • 自定义信号和槽
      • 1.自定义信号
      • 2.自定义槽
      • 3.建立连接
      • 4.进行触发
    • 自定义信号重载
      • 带参数的
      • 按钮触发
      • 信号触发信号
      • 拓展
    • lambda表达式
      • 返回值
      • mutable修饰
      • 案例
    • 打开关闭窗口案例
  • 总结

引出

QT学习(1)——创建第一个QT程序,信号和槽,打开关闭窗口的案例


规范和帮助文档

在这里插入图片描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

//类名首字母大写,单词和单词之间首字母大写
//函数名变量名称首字母小写,单词和单词之间首字母大写
//快捷键
//注释ctrl +/
// 运行 ctrl +r
// 编译 ctrl b
//字体缩放ctr1+ 鼠标滚轮
//查找 ctrl+f
//整行移动 ctrl+shift+↑或者,
//帮助文档F1
//自动对齐 ctrl i;
//同名之间的.h和.cpp切换 F4
//帮助文档第一种方式F1第二种左侧按钮 1
//D:\MyPrograme\QT\5.14.2\mingw73_32\bin

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

创建第一个Qt程序

2.1点击创建项目后,选择项目路径到以及给项目起名称
2.2名称·不能有中文不能有空格
2.3路径·不能有中文路径
2.4默认创建有窗口类,yWidget,基类有三种选择:QWidget、QMainWindowQDialog

2.5 main函数
2.5.1 QApplication a应用程序对象,有且仅有一个
2.5.2 mywidget w;实例化窗口对象
2.5.3 w.show0调用show函数显示窗口
2.5.4 return a.exec(让应用程序对家进入消总循环机,制中,代码阻塞到当前行

#include "mywidget.h"#include <QApplication> // 应用程序头文件
#include <QLabel>// main程序入口 argc 命令行变量数量,argv命令行变量数组
int main(int argc, char *argv[])
{// 应用程序对象,qt中有且只有一个QApplication a(argc, argv);// 窗口默认不显示,需要调用show方法myWidget w;w.show();// 进入消息循环,死循环return a.exec();
}

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

#include "mywidget.h"#include <QLabel>
#include <QPushButton>myWidget::myWidget(QWidget *parent): QWidget(parent)
{QLabel *label = new QLabel("hello qt");label->setParent(this);// 创建按钮QPushButton *btn = new QPushButton("第二个按钮",this);btn->move(100,100);// 充值窗口大小resize(600,400);setWindowTitle("第一个窗口");
}myWidget::~myWidget()
{
}

对象树概念

4对像树
4.1 当创建的对象在堆区时候,如果指定的父亲是QObject派生下来的类或者QObject子类派生下来的类,可以不用管理释放的操作,将对象会放入到对象树中。
4.2 一定程度上简化了内存回收机制

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

信号signal槽slot

信号的发送者,发送的具体信号,信号的接受者,信号的处理(槽)

信号槽的优点,松散耦合,信号发送端和接受端本身是没有关联的,通过 connect连接将两端耦合在一起

6信号和槽
6.1连接函数:connect
6.2参数
6.2.1参数1 信号的发送者
6.2.2参数2 发送的信号(函数地址)
6.2.3参数3 信号的接受者
6.2.4参数4 处理的槽函数(函数的地址)
6.3松散羯合

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

自定义信号和槽

1.自定义信号

写到signals下
返回void
需要声明,不需要实现
可以有参数,可以重戟

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.自定义槽

返回void
需要声明,也需要实现
可以有参数,可以重载
写到public slot下或者public或者全局函数

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.建立连接

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

// 老师饿了,学生请吃饭
connect(te,&Teacher::hungry,st,&Student::treat);

4.进行触发

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

自定义信号重载

当自定义信号和槽出现重载
8.1 需要利用还数指针明确指向函数的地址·
8.2void(Teacher::tsignal )QString )=&Teacher::hungry;
8.3 QString转成char *
8.3.1.ToUtf80转为QByteArray
8.3.2.Data0转为Char *
8.4信号可以连接信号
8.5断开信号disconnect

带参数的

    void (Teacher::*teacherSignal)(QString) = &Teacher::hungry;void (Student::*StudentSlot)(QString) = &Student::treat;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

void Student::treat(QString foodName){// QString -> char * 先转成QByteArray(.toUtf8())  再转成Char* ()qDebug() << "请老师吃。。。" << foodName.toUtf8().data();
}

按钮触发

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    // 用一个按钮调用下课QPushButton *btn = new QPushButton("下课了",this);// 重置窗口daxiaothis->resize(600,400);connect(btn,&QPushButton::clicked,this,&Widget::classIsOver);

信号触发信号

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    // 无参的信号和槽连接void (Teacher::*teacherSignal2)(void) = &Teacher::hungry;void (Student::*StudentSlot2)(void) = &Student::treat;connect(te,teacherSignal2,st,StudentSlot2);// 信号连接信号connect(btn,&QPushButton::clicked,te,teacherSignal2);

断开信号disconnect

拓展

1、信号是可以连接信号
2、一个信号可以连接多个槽函数
3、多个信号可以连接同一个糟函数
4、信号和槽函数的参数必须类型一一对应
5、信号和槽的参数个数是不是要一致?信号的参数个数可以多余槽函数的参数个数

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

connect(信号的发送者,发送的信号signal信号),信号接受者,槽函数SLOT)
优点:参数直观
缺点:编译器不会检测爸数类型:

lambda表达式

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

在这里插入图片描述

    [=](){btn->setText("aaa");}();

返回值

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    int ret = []()->int{return 1000;}();qDebug() << "ret = " << ret;

mutable修饰

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    QPushButton *myBtn1 = new QPushButton(this);QPushButton *myBtn2 = new QPushButton(this);myBtn1->move(100,100);int m = 10;connect(myBtn1,&QPushButton::clicked,this,[m]()mutable {m=100+10;qDebug()<< m;});connect(myBtn2,&QPushButton::clicked,this,[=](){qDebug()<<m;});qDebug() << m;

案例

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    QPushButton * btnClose = new QPushButton;btnClose->setText("close");btnClose->move(100,0);btnClose->setParent(this);connect(btnClose,&QPushButton::clicked,this,[=](){btnClose->setText("关闭");emit te->hungry("娃哈哈");
//        this->close();});

打开关闭窗口案例

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 窗口QWidget *myWidget = new QWidget;myWidget->resize(200,200);QPushButton *btnOpen = new QPushButton("打开",this);this->resize(600,400);connect(btnOpen,&QPushButton::clicked,this,[=](){myWidget->show();});QPushButton *btnclose = new QPushButton("关闭",this);btnclose->move(200,0);connect(btnclose,&QPushButton::clicked,this,[=](){myWidget->close();});// 一个按钮控制两个窗口QWidget *myWidget1 = new QWidget;myWidget1->resize(300,100);QPushButton *myBtn = new QPushButton("open",this);myBtn->move(50,50);connect(myBtn,&QPushButton::clicked,this,[=](){if(myBtn->text()=="open"){myBtn->setText("close");myWidget1->show();}else {myBtn->setText("open");myWidget1->close();}});}Widget::~Widget()
{delete ui;
}

总结

QT学习(1)——创建第一个QT程序,信号和槽,打开关闭窗口的案例

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

导出QQ好友列表、群列表、群员列表

MENU 准备工作在浏览器地址栏中输入地址使用F12快捷键打开开发者工具(浏览器控制台)点击头像登入网站(推荐)或手机扫码登录获取群列表获取好友列表获取群员列表 准备工作 一台带有浏览器的电脑 在浏览器地址栏中输入地址 https://qun.qq.com/member.html 使用F12快捷键打开开发…

一文搞懂反射,还有谁不懂,直接甩给他

Hi,大家好&#xff0c;我是抢老婆酸奶的小肥仔。 反射&#xff0c;在我们日常开发中无时无刻&#xff0c;被大量运用在框架代码和工具代码中&#xff0c;反射可以通俗点讲就是一个类的自我剖析&#xff0c;通过反射可以获取到这个类所有信息&#xff0c;包括&#xff1a;属性&…

美国政府发布新的国际网络空间和数字政策战略(上)

文章目录 前言一、战略内容介绍二、数字团结的含义三、如何建立数字团结前言 美国务院5月6日正式发布《美国国际网络空间和数字政策战略:迈向创新、安全和尊重权利的数字未来》,旨在指导国际社会参与技术外交并推动《美国国家安全战略》和《美国国家网络安全战略》。 美国务…

创新指南|将会话式AI聊天机器人纳入PLG增长战略

想象一个繁荣的数字城市广场&#xff0c;志同道合的人们在这里分享他们的激情、经验和知识。想象一个将房东与旅行者、顾客与司机、人们与他们喜爱的品牌无缝连接起来的平台。在这个世界里&#xff0c;用户交流促进增长&#xff0c;社区成为推动力。 如果您的应用程序天生不符…

视频编辑软件pitivi基本功之创建标题片段

视频编辑软件pitivi基本功之创建标题片段 台式机的系统是openSUSE-Leap-15.5-DVD-x86_64 一、素材来源 《视频编辑软件pitivi基本功之使用SSR录制电脑屏幕》 https://blog.csdn.net/weixin_42145772/article/details/138597608?spm1001.2014.3001.5502 根据上面文章的方法得…

考了PMP后,NPDP到底还有没有必要考?NPDP通关宝典来啦!

NPDP和PMP相比&#xff0c;两者的相同点都是由美国发起的&#xff0c;都是管理行业的证书。区别也很大&#xff0c;PMP是项目经理国际认证证书&#xff0c;NPDP是产品经理认证证书&#xff0c;不过PMP已经由外专局引入国内二十多年了&#xff0c;在市面上知名度更高&#xff0c…

【数据结构】第五讲:栈和队列

个人主页&#xff1a;深情秋刀鱼-CSDN博客 数据结构专栏&#xff1a;数据结构与算法 源码获取&#xff1a;数据结构: 上传我写的关于数据结构的代码 (gitee.com) 目录 一、栈 1.栈的定义 2.栈的实现 a.栈结构的定义 b.初始化 c.扩容 d.入栈 e.出栈 f.打印 g.取栈顶元素…

Java医院绩效管理应用系统源码java+ maven+ avue 公立医院绩效考核管理系统源码 支持二开

Java医院绩效管理应用系统源码java maven avue 公立医院绩效考核管理系统源码 支持二开 医院绩效管理系统解决方案紧扣新医改形势下医院绩效管理的要求&#xff0c;以“工作量为基础的考核方案”为核心思想&#xff0c;结合患者满意度、服务质量、技术难度、工作效率、医德医风…

Java入门基础学习笔记16——运算符

package cn.ensource.operator;public class OperatorDemo1 {public static void main(String[] args) {// 目标&#xff1a;掌握基本的算术运算符的使用int a 10;int b 2;System.out.println(a b);System.out.println(a - b);System.out.println(a * b); // 20System.out.…

Pandas DataFrame行迭代:初学者指南

在数据分析中&#xff0c;Pandas是一个强大的Python库&#xff0c;它提供了快速、灵活以及表达力强的数据结构&#xff0c;旨在使“关系”或“标签”数据的操作既简单又直观。对于初学者来说&#xff0c;理解如何迭代DataFrame的行是一项基础但重要的技能。本文将通过通俗易懂的…

一文讲透亚马逊云三层架构

关于三层架构&#xff0c;我们有很多想说的话&#xff1a; &#xff08;以下内容以下都在VPC中&#xff09; cloudfront做CDN加速网关规划S3做静态网站托管APIGateway作为统一网关入口认证/限流Lambda 作为传统后端&#xff0c;并发&#xff0c;底层架构Redis缓存DDB作为持久化…

CH340 RTS DTR引脚编程驱动OLED

运行结果 硬件连接&#xff08;在连接线上串接300R电阻&#xff09; 下面是c#实现代码 using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks;using uint8 System.Byt…

5月10日学习记录

[NCTF2019]True XML cookbook(xxe漏洞利用) 这题是关于xxe漏洞的实际应用&#xff0c;利用xxe漏洞的外部实体来进行ssrf探针内网的主机 和[NCTF2019]Fake XML cookbook的区别就在于xxe漏洞的利用方向&#xff0c;一个是命令执行&#xff0c;一个是SSRF 看题&#xff0c;打开…

26、Flink 的状态数据结构升级

状态数据结构升级 a&#xff09;概述 Flink 流应用通常被设计为永远或者长时间运行&#xff0c;与所有长期运行的服务一样&#xff0c;应用程序需要随着业务的迭代而进行调整&#xff0c;应用所处理的数据 schema 也会随着进行变化。 升级状态类型的数据 schema &#xff0c…

【redis】Redis五种常用数据类型和内部编码,以及对String字符串类型的总结

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

ORACLE ODAX9-2的一个误告警Affects: /SYS/MB的分析处理

在运维的多套ORACLE ODAX9-2版本&#xff0c;都遇到了一个计算节点的告警&#xff1a;Description: The service Processor poweron selftest has deteced a problem. Probabity;:100, UulD:cd1ebbdf-f099-61de-ca44-ef646defe034, Resource:/SYS/MB,&#xff1b;此告警从描述上…

React 第三十一章 虚拟DOM

面试题&#xff1a;什么是虚拟DOM&#xff1f;其优点有哪些&#xff1f; 标准且浅显的答案 虚拟dom本质上就是一个普通的 JS 对象&#xff0c;用于描述视图的界面结构 虚拟 DOM 最早是由 React 团队提出来的&#xff0c;因此 React 团队在对虚拟 DOM 的定义上面有绝对的话语权。…

【Linux】基础命令,文件处理,用户,vim编辑器,文件压缩

常用命令及参数&#xff1a;dir表示文件夹&#xff0c;file表示文件&#xff08;file可表示其他目录下的文件&#xff09; pwd命令&#xff1b;查看当前所属文件夹&#xff08;print working directory&#xff09; ls [选项] dir&#xff1b;查看当前、指定文件夹目录内容&am…

以太网技术介绍

随着通信和计算机技术的不断发展&#xff0c;无论是骨干网还是接入网&#xff0c;以太网都已成为应用场景最多&#xff0c;应用范围最广泛的技术之一。对于初次应用以太网的读者&#xff0c;本文主要给出以太网技术的基础知识&#xff0c;并对以太网涉及的部分协议进行简要说明…

硕博电子洗扫车电控系统:让洗扫更智能,更高效!

硕博电子洗扫车电控系统以7寸显示屏、移动控制器、操作面板为核心&#xff0c;具有8~ 32V DC宽压输入、耐震动、抗冲击、耐腐蚀、高防护等特性。三个主要核心元件与副发动机、底盘和、GPS 模块等均通过CAN 总线进行通信&#xff0c;交互数据&#xff0c;通信稳定可靠&#xff0…