qt信号与槽

news/2024/12/2 18:43:04/

信号与槽的概念:

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.ppmy.cn/news/789442.html

相关文章

计算机的符号名称大全集,特殊符号大全

我们在起网名或者游戏名字的时候&#xff0c;都时常用到一些特殊符号&#xff0c;那么特殊符号如何打&#xff0c;或者如何使用特殊符号呢&#xff0c;PConline为大家收集了最新的特殊符号大全。来挑选中意的组合自己的网名或游戏名字吧。 特殊符号怎么打出来 ★1:软键盘输入 包…

html上下两个箭头符号怎么打出来,往返双箭头符号怎么打

本文收集整理关于往返双箭头符号怎么打的相关议题,使用内容导航快速到达。 内容导航: Q1:怎么打上下一体的双箭头符号? ←→ ?? 用两符号组合吧 ?? Word ?? 设置字间距把向左键头选设置字间距 ?? 0 ?? 或者负使两箭头贴起成了双箭头了 ?? ?? 选择文输入法(智…

智能陈桥输入法软件测试,智能陈桥五笔输入法

智能陈桥五笔输入法是一款电脑汉字输入软件&#xff0c;能输出二万七千多汉字编码的五笔&#xff0c;可输出“鎔”、“祎”、“堃”等各种生僻字&#xff0c;同时具有智能提示、语句输入、语句提示及简化输入、 智能选词等多种智能化输入功能&#xff0c; 还支持繁体汉字输出、…

花儿五笔高级设置

ogj进入高级设置 基本操作 功 能功能键 功 能功能组合键直通车 中/英文切换Shift 全/半角切换Shift 空格oqb 翻页[ ] 中/英文标点切换Ctrl .ozy 快速符号引导&#xff1b; 简/繁体切换Ctrl Alt jofj 便捷输入、生僻字引导’ 手动造词Ctrl Alt ojc 临时…

linux添加五笔输入法,RedHat Linux 9中vim升级方法及如何安装五笔输入法

1 vim升级方法 1.1 下载新版本的vim安装包及语言包 到vim官方网站上www.vim.org下载对应的版本,这里以7.2版为例 vim-7.2.tar.bz2 vim-7.2-lang.tar.gz 假设下载后存放目录为/tmp/tools 1.2 解压 进入终端,先切换到打算解压的目录,比如说我要解压到/root/tools目录下,则操作方式…

智能陈桥五笔输入法 for linux,智能陈桥五笔 for Linux

智能陈桥是一套功能强大的汉字输入软件&#xff0c;她内置了直接支持二万多汉字编码的五笔和 新颖实用的陈桥拼音(增加了笔画输入)&#xff0c;具有智能提示、语句输入、语句提示及简化输入、智能选词 等多项非常实用的独特技术&#xff0c;支持繁体汉字输出、各种符号输出、大…

java 汉字字典,获取汉字拼音,拼音首字母,五笔,笔画,笔画顺序

最新的可以下载的包&#xff08;原来写的丢失了&#xff0c;重新写了个&#xff09;&#xff1a; http://download.csdn.net/detail/wssiqi/6394057 如果地址不可访问&#xff0c;查看我的资源&#xff0c;看还在不。~~~ 环境&#xff1a;eclipsse, jdk1.6, 没有使用第三方的…

计算机8字少一竖是什么符号,一长一短两竖符号怎么弄

公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解。 话题:一长一短两竖符号怎么弄? 问题详情:就是像这样的回答:l丨 参考回答:〢你说应该就是这个吧话题:三竖的符号怎么打? 问题详情:就是旁边两竖长,中间一竖短的,最好打出来给我看到。回答:〣 是这个符号…