Qt信号和槽的两种类型

信号和槽机制
Signal&Slot  信号和槽机制用于两个对象的通信。在GUI编程中,总希望一个部件的变化其他的部件也能够了解到。这就是说,我们希望任何对象都可以和其他的对象进行通信。当一个特殊的事情发生时便可以发射一个信号,比如按钮被单击;而槽就是一个函数,他在信号发射后被用来响应这个信号。一个信号可以关联到多个槽上,多个信号也可以关联到同一个槽上,甚至,一个信号还可以关联到另一个信号上。
下面介绍两种不同的方法实现信号和槽的关联:
1.信号和槽的手动关联:
 signals:
    void dlgReturn(int);//自定义的信号
声明信号要用signals:关键字。同时信号没有返回值,只能是void类型的。因为只有QObject类及其子类才能使用槽机制,QDialog继承自QWidget,而QWidget又继承
自QObject;
在ui界面上添加一个spin box部件和push button部件

然后转到push button的clicked的槽上
void MyDialog::on_pushButton_clicked()
{
    int value=ui->spinBox->value();//获取输入的数值
    emit dlgReturn(value); //发射信号
    close(); //关闭对话框
}
同时定义一个slots:
private slots:
    void showValue(int value);

在Widget构造函数上关联信号和槽
    MyDialog *dlg=new MyDialog(this);
    connect(dlg,SIGNAL(dlgReturn(int)),this,SLOT(showValue(int)));
    dlg->show();
定义函数
void Widget::showValue(int value)
{
    ui->label->setText(tr("获取的值是:%1").arg(value));
}

运行程序,单击button按钮之后,会获取spin box的值同时使用自定义的信号将其作为参数发送出去。发射一个信号要用emit关键字。这就完成了信号和槽的关联
2.信号和槽的自动关联
声明一个private slots:
		void on_myButton_clicked();
这里自定义了一个槽,他使用自动关联。然后在cpp文件中添加QPushButton头文件
在构造函数中添加
QPushButton *button=new QPushButton(this); //创建按钮
button->setObjectNmae("my Buttton");//指定函数的对象名
ui->setupUi(this);  //要在定义了部件以后在调用这个函数
 
 
void Widget::on_myButton_clicked()
{
	close();
}
这样就使用了自动关联了
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值