当前位置:   article > 正文

QT 简单了解信号槽-函数 和跨ui传参_qt外部类给ui类发送信号

qt外部类给ui类发送信号

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

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

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

 

  1. #include <QPushButton>
  2. #include <QDialog>
  3. //创建QPushButton按钮
  4. QPushButton *btn = new QPushButton("我是按钮"this);
  5. connect(btn,SIGNAL(clicked()),this,SLOT(close()));//关闭窗口
  6. connect(btn,SIGNAL(clicked()),this,SLOT(showMaximized()));//窗口最大化
  7. connect(btn,SIGNAL(clicked()),this,SLOT(showMinimized()));//窗口最小化
  8. //connect (信号的发送者 发送的具体信号 信号的接收者 信号处理 (槽))
  9. //Lambda 表达式
  10. connect(btn,&QPushButton::clicked,[=](){
  11. QDialog *dlg = new QDialog(this);
  12. dlg->resize(200,200);
  13. dlg->show();
  14. });
  1. .h 头文件
  2. private slots:
  3. void onClicked();
  4. .cpp文件
  5. void MainWindow::onClicked(){
  6. close();//关闭窗口
  7. }

设计师界面

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

  1. 1.A窗口 .cpp 文件中
  2. SetDialog dlg;
  3. //时间循环会阻塞ui 所以connect在上面,打开窗口在下面
  4. connect(&dlg,&SetDialog::sig_addOne,[=](QString value){
  5. ui->username->setText(value);
  6. qDebug() << ui->username->setText(value); //123
  7. });
  8. dlg.exec();//打开B窗口
  9. 2.在.h中添加signals传参函数
  10. signals:
  11. void sig_addOne(QString value); //value 传参的类型
  12. 3.在B窗口.cpp 文件中触发
  13. Qstring value = "123";
  14. emit sig_addOne(value);//emit触发

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号