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

       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));
}

 

posted @ 2019-10-09 12:03  jasmineTang  阅读(112)  评论(0)    收藏  举报