QT(2)-信号与槽-2-1,多值-示例源码

本文详细介绍如何在QT中实现一个信号关联到两个槽的机制,通过实例展示如何从一个对话框Dialog1发送信号,使MainWindow和Dialog2两个对话框分别响应并显示数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       QT中信号与槽可以是一一对应,也可以是一个信号关联到多个槽上,多个信号关联到一个槽上,是N-N的模式。


  本文实现的是一个信号关联到两个槽上。

比如:把Dialog1对话框上的值10、20,显示到另外两个对话框MainWindow 和Dialog2。


点击Dialog1上的pushButton后 MainWindow和Dialog2分别显示10 20

步骤:1.创建三个对话框 分别是MainWindow、Dialog1、Dialog2,每个对话框上布置好相应的控件。

           2. Dialog1上定义发射信号,定义实现槽

           3. MainWindow、Dialog2接收信号、实现关联、定义实现槽


代码实例

1.Dialog1上定义、实现发射信号和槽

    定义信号:signals:void dlgReturn(int,int);         // 自定义信号

           private slots: void on_pushButton_clicked();

   实现信号发射:

void Dialog1::on_pushButton_clicked()
{
    int value1 = ui->spinBox1->value();    // 获取输入的数值
    int value2 = ui->spinBox2->value();    // 获取输入的数值
    emit dlgReturn(value1,value2);               // 发射信号

}

2.MainWindow定义槽、实现关联

定义槽:       private slots:void showValue(int value1,int value2 );
              private slots:void on_pushButton_clicked();

  实现槽:

void MainWindow::showValue(int value1,int value2)         // 自定义槽

{

    ui->label1->setText(tr("获取的值是:%1").arg(value1));

    ui->label2->setText(tr("获取的值是:%1").arg(value2));

}

实现关联:

void MainWindow::on_pushButton_clicked()

{

    myDlg1 *dlg1 = new myDlg1(this);

    connect(dlg1, &myDlg1::dlgReturn, this, &MainWindow::showValue);

    dlg1->show();

    Dlg2 *dlg2 = new Dlg2(this);

    connect(dlg1, &myDlg1::dlgReturn, dlg2, &Dlg2::showValue);

    dlg2->show();

 

}

3.Dialog2关联、槽

定义槽:

public slots:void showValue(int value1,int value2 );

实现槽:

void Dlg2::showValue(int value1,int value2)         // 自定义槽
{
    ui->label1->setText(tr("获取的值是:%1").arg(value1));
    ui->label2->setText(tr("获取的值是:%1").arg(value2));
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值