QT 简单了解信号槽-函数 和跨ui传参

信号,首先看下什么是事件和信号?
以QPushButton的单机事件为例

鼠标按下事件会触发mousePressEvent事件,然后QPushButton会发射pressed信号
松开按钮会触发mouseReleaseEvent事件,然后QPushButton会发射released()信号和clicked信号
常见的事件如点击双击鼠标移动,键盘输入事件等,事件会专门在后边进行讲解
当实例化对象上产生这些事件时,该实例对象就会发出特定的信号
信号的本质就是函数,并且是只需声明,无需实现的函数

 
槽?
通常就是槽函数
当点击按钮QPushButton按钮之后通常会执行对应的操作,如让QMainWindow窗口最大或者最小化,或者关闭窗口

 

#include <QPushButton>
#include <QDialog>

//创建QPushButton按钮
QPushButton *btn = new QPushButton("我是按钮",this);

connect(btn,SIGNAL(clicked()),this,SLOT(close()));//关闭窗口
connect(btn,SIGNAL(clicked()),this,SLOT(showMaximized()));//窗口最大化
connect(btn,SIGNAL(clicked()),this,SLOT(showMinimized()));//窗口最小化

//connect (信号的发送者  发送的具体信号  信号的接收者  信号处理 (槽))

//Lambda 表达式 
connect(btn,&QPushButton::clicked,[=](){
        QDialog *dlg = new QDialog(this);
        dlg->resize(200,200);
        dlg->show();
    });
.h 头文件
private slots:
    void onClicked();



.cpp文件
void MainWindow::onClicked(){
    close();//关闭窗口
}

设计师界面

跨ui槽函数发送信号,传递参数

1.A窗口 .cpp 文件中

SetDialog dlg;
//时间循环会阻塞ui  所以connect在上面,打开窗口在下面
connect(&dlg,&SetDialog::sig_addOne,[=](QString value){
    ui->username->setText(value);
    qDebug() << ui->username->setText(value); //123
});

dlg.exec();//打开B窗口




2.在.h中添加signals传参函数
signals:
    void sig_addOne(QString value);  //value 传参的类型




3.在B窗口.cpp 文件中触发
Qstring value = "123";
emit sig_addOne(value);//emit触发


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值