赞
踩
信号,首先看下什么是事件和信号?
以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触发
-
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。