2、QT的信号与槽

一、什么是信号与槽

一个对象发送一个信号出去,另外一个对象接收到该信号后,会触发相应的槽函数

二、信号与槽的语法

connect(信号的发送者,SIGNAL(信号名称),信号的接收者,SLOT(槽函数));

1、写法:

QT 4 的写法

connect(sender,SIGNAL(valueChanged(QString,QString)),receiver,SLOT(updateValue(QString)));

QT 5的写法

connect(sender,&Sender::valueChanged,receiver,&Receiver::updateValue);

2、定义

控件生成信号定义:

①、在需要接收信号的类中 声明槽函数

//声明槽函数
public slots:
	void set_label();

②、在xxx.cpp 中实现槽函数

void MainWindow::set_label()
{ui->label->setText("设置标签成功!!!666");}

③、进行信号与槽的关联

connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(set_label()));

用户自定义信号:
①、在信号的发送者类中声明信号

signals:
	void mysig();

②、关联信号与槽

connect(this,SIGNAL(mysig()),this,SLOT(set_label()));

③、发送信号

emit mysig();

3、信号与槽的参数传递

①、定义一个带参的信号

signals:
	//定义一个带参的信号
	void mysig(int a);

②、定义一个带参数的槽

public slots:
	void get_sig(int a);

③、进行信号与槽的关联

connect(this,SIGNAL(mysig(QString)),this,SLOT(get_sig(QString )));

④、发送带参数的信号

emit mysig("HELLO QT");

参数传递注意事项:

  • 1、信号与槽的参数类型必须要匹配
  • 2、发送者的参数的个数 必须要大于或等于 接收者参数的个数

2、QT的信号与槽_第1张图片

2、QT的信号与槽_第2张图片

信号与槽的取消关联

语法:

disconnect(信号的发送者,SIGNAL(发送的信号),信号的接收者,SLOT(接收的信号));
-----------------------------------------------------------------------
例子:
disconnect(this,SIGNAL(mysig()),this,SLOT(get_sig()));

你可能感兴趣的:(QT Creator,qt,开发语言)