两个界面的信号和槽

前言

在一个界面上获取数值,发送信号,跳转到另一个界面的槽,实现两个界面的交互,信息传递。

学习自:Qt Creator 快速入门第三版 霍亚飞 编著

例子为: 基类QWidget,主界面创建一个“Qt设计师界面类”,界面模板选择Dialog without Buttons,在对话框中输入数值,单击确定按钮时关闭对话框,并将输入的数值通过信号发射出去,主界面接收到信号,label显示数值。

程序

在mydialog.h中自定义信号:

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

在mydialog.ui中, 放入数值选择spin box和按钮pushbutton

转到“确认"按钮的信号槽,到mydialog.cpp中

void MyDialog::on_pushButton_clicked()
{
    int value = ui->spinBox->value(); //获取输入的数值
    emit dlgReturn(value);  //发射信号
    close();             //关闭对话框
}

在widget.h中,自定义槽函数:

private slots:
    void showValue(int value);

在widget.ui中,放入label显示数值

在widget.cpp中,1.构造函数中,创建dialog实例,连接自定义信号和槽

MyDialog *dlg = new MyDialog(this);//创建一个Mydialog实例dlg
connect(dlg,SIGNAL(dlgReturn(int)),this,SLOT(showValue(int))); //将对话框中的自定义信号与主界面中的自定义槽进行关联
dlg->show();

在调用该connect()函数时,信号和槽的参数只能有类型,不能有变量名,如:写成SLOT(showValue(int value))是不对的。

在Qt5中加入了重载形式,更加简便易检查,建议使用

代替代码

connect(dlg,&MyDialog::dlgReturn,this,&Widget::showValue);

 可以再关联时直接编写信号发射后要执行的代码:
 

connect(dlg,&MyDialog::dlgReturn,[=](int value){
        ui->label->setText(tr("获取的值是:%1").arg(value));

2.自定义槽函数

void Widget::showValue(int value) //自定义槽
{
    ui->label->setText(tr("获取的值是:%1").arg(value));
}

运行结果

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值