qt信号与槽

信号与槽的概念:

1>信号:信号就是信号函数,可以是组件自身提供,也可以是用户自己定义,自定义时,需要类体的signals权限下进行定义,该函数是一个不完整的函数,只有声明,没有定义。

2>槽:槽函数,可以由组件自身提供,也可以是用户自定义。定义时,需要在类体的slots权限下进行定义。该函数是一个完整的函数,既有声明,也有定义。并且槽函数可以像普通函数一样被调用,但是普通函数不能想槽函数一样连接信号

3>信号函数与槽函数,都是没有返回值的函数,可以有参数

4>包含信用与槽类体的定义格式

信号函数与槽函数的总结:

1>一个信号函数可以对应多个槽函数

2>多个信号函数,可以对应一个槽函数

3>一般要求信号函数的参数个数和类型必须跟槽函数的参数和类型保持一致

4>当信号函数的参数大于槽函数参数个数时,也就是说槽函数可以不接受信号函数的参数,但是不能乱接受信号函数的参数

5>当信号函数的参数小于槽函数的参数时,那么要求槽函数的参数,右侧的参数要有默认参数,否则报错

6>信号函数,可以连接信号函数,能够做到,当一个信号被发射后,另一个信号也被发射v

实现登录成功后,关闭当前界面,打开新的界面

second.h

#ifndef SECOND_H
#define SECOND_H#include <QWidget>namespace Ui {
class second;
}class second : public QWidget
{Q_OBJECTpublic:explicit second(QWidget *parent = nullptr);~second();
public slots:void jump_slot(); //定义接收jump信号的槽函数private:Ui::second *ui;
};#endif // SECOND_H

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QIcon>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QToolButton>
#include <QCheckBox>
#include <QDebug>
class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = 0);~Widget();
private slots:void my_slot();
public slots:void cancel_slot();
signals:void jump(); //自定义跳转函数private:QPushButton *btn1;//登录QPushButton *btn2;//取消QLineEdit *edit1;//用户idQLineEdit *edit2;//用户id
};#endif // WIDGET_H

widget.cpp

#include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent)
{this->setFixedSize(500,500); //设置固定尺寸this->setWindowTitle("QQ2024");//设置标题this->setWindowIcon(QIcon("C:\\Users\\86150\\Desktop\\icon\\icon_z8w8m9orsdk\\QQ.png"));//设置图标//创建logoQLabel *logo=new QLabel(this);//设置logo大小logo->resize(500,250);//添加图片logo->setPixmap(QPixmap("C:\\Users\\86150\\Desktop\\icon\\bf"));//设置内容为自适应logo->setScaledContents(true);//设置1个标签和1个行编辑 表示用户 和 用户账号QLabel *user=new QLabel(this);//设置user大小user->move(100,300);user->resize(40,40);user->setPixmap(QPixmap("C:\\Users\\86150\\Desktop\\icon\\icon_z8w8m9orsdk\\denglu.png"));user->setScaledContents(true);edit1=new QLineEdit(this);edit1->move(150,300);edit1->resize(200,40);edit1->setStyleSheet("border:none;");edit1->setPlaceholderText("账号/id");QToolButton *tool=new QToolButton(this);tool->move(358,310);tool->resize(20,20);//设置1个标签和1个行编辑 表示密码标识 和 密码QLabel *pass=new QLabel(this);//设置logo大小pass->move(100,350);pass->resize(40,40);pass->setPixmap(QPixmap("C:\\Users\\86150\\Desktop\\icon\\icon_z8w8m9orsdk\\denglumima.png"));pass->setScaledContents(true);edit2=new QLineEdit(this);edit2->move(150,350);edit2->resize(200,40);edit2->setStyleSheet("border:none;");edit2->setPlaceholderText("密码/password");edit2->setEchoMode(QLineEdit::Password);//设置为密文模式QCheckBox *box=new QCheckBox("记住密码",this);box->move(360,350);box->resize(90,40);//设置登录按钮和取消按钮btn1=new QPushButton("登录",this);btn1->move(250,425);btn1->resize(70,40);btn1->setIcon(QIcon("C:\\Users\\86150\\Desktop\\icon\\icon_z8w8m9orsdk\\denglu_1.png"));btn2=new QPushButton("取消",this);btn2->move(330,425);btn2->resize(70,40);btn2->setIcon(QIcon("C:\\Users\\86150\\Desktop\\icon\\icon_z8w8m9orsdk\\quxiao.png"));//登录使用q4版本手动连接//connect(btn2,SIGNAL(clicked()),this,SLOT(cancel_slot()));connect(btn1,SIGNAL(clicked()),this,SLOT(my_slot()));//使用q5版本手动连接connect(btn2,&QPushButton::clicked,this,&Widget::cancel_slot);}void Widget::cancel_slot()//处理推出的槽函数
{this->close();
}

second.cpp

#include "second.h"
#include "ui_second.h"second::second(QWidget *parent) :QWidget(parent),ui(new Ui::second)
{ui->setupUi(this);
}
void second::jump_slot()
{this->show();
}
second::~second()
{delete ui;
}

main.cpp

#include "widget.h"
#include "second.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();second s; //定义第二个界面对象QObject::connect(&w,&Widget::jump,&s,&second::jump_slot);return a.exec();
}

运行结果:

 

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

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

相关文章

【FFMPEG】AVFilter使用流程

流程图 核心类 AVFilterGraph ⽤于统合这整个滤波过程的结构体 AVFilter 滤波器&#xff0c;滤波器的实现是通过AVFilter以及位于其下的结构体/函数来维护的 AVFilterContext ⼀个滤波器实例&#xff0c;即使是同⼀个滤波器&#xff0c;但是在进⾏实际的滤波时&#xff0c;也…

【已解决】Couldn‘t find a tree builder with the features you requested: lxml

这是一个常见于Python爬虫代码的报错。 报错代码&#xff1a; soup BeautifulSoup(r.text, xml) 报错原因&#xff1a; BeautifulSoup的解析方法之一&#xff0c;xml&#xff0c;需要安装好lxml库才行 解决办法&#xff1a; 安装 lxml 库即可。 pip install lxml 安装好…

【私有云】网络虚拟化

前言 大家好&#xff0c;我是秋意零。 之前一直对 OpenStack 网络很陌生与神奇啊&#xff0c;不知道它是如何实现的&#xff0c;网络结构是怎样的。不过&#xff0c;今天介绍的是网络虚拟化&#xff0c;它在 OpenStack 中及云计算中是非常重要的概念&#xff0c;是理解 OpenS…

Basic of Solidity (solidity基础)

目录 1.first contract 申明编译器版本 定义合约 合约构造函数 定义变量 定义函数 2.data type 值类型&#xff08;Value Types&#xff09; 引用类型&#xff08;Reference Types&#xff09; 映射类型&#xff08;Mapping Types&#xff09; Solidity是一种用于编写…

接口性能优化技巧

背景 我负责的系统在去年初就完成了功能上的建设&#xff0c;然后开始进入到推广阶段。随着推广的逐步深入&#xff0c;收到了很多好评的同时也收到了很多对性能的吐槽。 刚刚收到吐槽的时候&#xff0c;我们的心情是这样的&#xff1a; 当越来越多对性能的吐槽反馈到我们这里的…

智安网络|网络安全威胁多样化和复杂化,防护任务日益艰巨

随着数字化和网络化的加速发展&#xff0c;人们面临的网络安全问题日益增多。由于网络安全威胁的多样性和复杂性&#xff0c;网络安全防护变得越来越困难。 一. 网络安全威胁的复杂性 网络安全威胁种类繁多&#xff0c;主要包括病毒、木马、蠕虫、间谍软件、恶意软件、黑客攻击…

基于单片机指纹考勤系统的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;利用指纹采集模块存储打卡信息&#xff1b;12864显示当前考勤信息&#xff0c;时间 &#xff1b;如果迟到 语音播报 您已迟到&#xff1b;按键进行注册指纹、删除指纹、设置当前时间和签到时间、查询打卡等&#xff1b;具有掉电保存…

把同组人做的工作写在自己简历上,算造假吗?知道这个需求不是我做的人,这个世界可能不超过10个人!...

把同组人做的东西写在自己简历上&#xff0c;算造假吗&#xff1f; 一位网友问&#xff1a; 同组人做的需求&#xff0c;需求细节我完全可以讲得清楚。知道这个需求不是我做的人&#xff0c;全世界可能不超过10个人&#xff0c;我把这个需求写在自己简历上算简历造假吗&#xf…

【Python爬虫与数据分析】时间、日期、随机数标准库

目录 一、模块化概述 二、time库 1. 时间获取 2. 时间格式化 3. 程序计时 三、datetime库 1. datetime.datetime类 2. datetime.timedelta类 四、random库 1. 基本随机函数 2. 扩展随机函数 3. 随机时间的生成 一、模块化概述 Python程序由模块组成&#xff0c;一个…

Mysql中默认自动事务autocommit关闭和开启方式、rollback回滚恢复数据的使用方法

文章目录 autocommit自动提交事物一、查看autocommit状态二、修改autocommit 状态的方式1、第一种方式2、修改mysql配置文件my.cnf 二、rollback回滚1、autocommit 开启1、autocommit 关闭 autocommit自动提交事物 MySQL 默认开启事务自动提交模式&#xff0c;每条 SOL 语句都…

超详细 | 遗传-粒子群自适应优化算法及其实现(Matlab)

作者在前面的文章中介绍了两种经典的优化算法——遗传算法(GA)和粒子群算法(PSO)&#xff0c;这些智能优化算法解决问题的方式和角度各不相同&#xff0c;都有各自的适用域和局限性&#xff0c;对智能优化算法自身做的改进在算法性能方面得到了一定程度的提升&#xff0c;但算法…

AI PPT 一句话搞定PPT讲演搞

相信大家在职场中&#xff0c;一定会接触过写PPT&#xff0c;经常会把你搞得焦头烂额。在大部分的公司里&#xff0c;写PPT汇报又是不可能逃避的事情。但随着AI时代的到来&#xff0c;有很多AI帮你写PPT的工具也逐渐崭露头角&#xff0c;可以自动帮助你制作出华丽的PPT&#xf…