首页 > 其他分享 >Qt信号与槽

Qt信号与槽

时间:2024-07-10 21:51:51浏览次数:13  
标签:const Qt mySignal int SIGNAL 信号 disconnect

信号和槽是QT自行定义的一种通信机制,独立于标准的C/C++语言。

信号与槽可以一对一、一对多、多对一。

 

信号(signals:)是无返回值、无函数体、可有参的函数(声明),被emit发出后无序地被对应的槽接收然后执行槽函数。

槽(slots:)是普通的类成员函数。

 

信号与槽的绑定函数原型:

bool QObject::connect ( const QObject * sender, const char * signal,const QObject * receiver, const char * member ) [static]

信号的定义:
在.h中
void mySignal();
void mySignal(int x,int y);
槽的定义:
在.h中声明,在.cpp中实现
void mySignal();
void mySignal(int x,int y);
void MyClassName::mySlot(){
        qDebug()<<"mySlot()";
        emit mySignalSlot(1,2);//这里发射了一个信号
    }

void MyClassName::mySignalSlot(int x,int y){
        qDebug()<<"mySlot(int x,int y)"<<x<<" "<<y;
    }


信号与槽的绑定:
一般在构造函数中写
connect(ui->pushButton_1, SIGNAL(clicked()),this, SLOT(mySlot()));//假设有一个叫pushButton_1的按钮,按下的信号
connect(this, SIGNAL(MyClassName::mySignal(int,int)),this, SLOT(mySignalSlot(int,int)));
}

信号与槽解除绑定:
bool QObject::disconnect ( const QObject * sender, const char * signal, const Object * receiver, const char * member ) [static]
断掉对象所有信号与槽的绑定:
disconnect(ui->pushButton_1,0,0,0);
或者ui->pushButton_1->disconnect();
断开对象的某个信号与所有槽的绑定:
disconnect( ui->pushButton_1, SIGNAL(clicked()), 0, 0 )
或者
ui->pushButton_1->disconnect( SIGNAL(clicked()) )

断开两个对象之间的所有信号连接: 这会断开指定发射者对象和接收者对象之间的所有信号连接。

 disconnect(myObject, 0, myReceiver, 0); // 或者 myObject->disconnect(myReceiver);

断开特定的信号和槽连接: 这会断开指定发射者对象的特定信号到指定接收者对象的特定槽的连接。

disconnect(myObject, SIGNAL(mySignal()), myReceiver, SLOT(mySlot())); // 或者

myObject->disconnect(SIGNAL(mySignal()), myReceiver, SLOT(mySlot()));

 



标签:const,Qt,mySignal,int,SIGNAL,信号,disconnect
From: https://www.cnblogs.com/trc258/p/18295066

相关文章

  • QtCreator使用Heob进行程序内存泄漏检测
    在Windows下,我们可以在QtCreator里使用Heob进行内存泄漏检测。下载到这里下载最新版的heob:【heob-heapobserver】下载后解压到某个文件夹下QtCreator使用heob新建一个Qt工程,然后写两句绝对导致内存泄漏的语句,并且要在profile或者debug模式下编译。然后选择Analyze--》......
  • opc ua设备数据 转MQTT项目案例
    目录1 案例说明 12 VFBOX网关工作原理 13 准备工作 24 配置VFBOX网关采集OPCUA的数据 25 用MQTT协议转发数据 46 配置参数说明 47 上报内容配置 58 其他说明 89 案例总结 81 案例说明设置网关采集OPCUA设备数据把采集的数据转成MQTT协议转发给其他系统。2 VFBOX......
  • PySide/PyQt中使网络请求更加方便简洁的实践
    众所周知,在PySide中,想要发送网络请求且不阻塞GUI线程,需要使用QNetworkAccessManager,但是这个东西用起来十分麻烦,需要写很多槽函数,而且必须要绑定在对象上,否则会报空指针。这种写法非常不优雅,而且让代码变得十分复杂。因此在写项目的实践中,我写了这样一个库,可以简化网络请求,特此分......
  • PySide/PyQt中使网络请求更加方便简洁的实践
    众所周知,在PySide中,想要发送网络请求且不阻塞GUI线程,需要使用QNetworkAccessManager,但是这个东西用起来十分麻烦,需要写很多槽函数,而且不能必须要绑定在对象上,否则会报空指针。这种写法非常不优雅,而且让代码变得十分复杂。因此在写项目的实践中,我写了这样一个库,可以简化网络请求,特......
  • 案例分享:Qt modbusTcp调试工具(读写Byte、Int、DInt、Real、DReal)(当前v1.0.0)
    前言  西门子PLC、台达PLC、法兰克机床等等多年以前玩得比较多,有tcp/ip通讯也有modbus通讯,modbus又分为网络,485,232等。  医疗项目,焊接机器人项目,工控机床项目,数控项目,物联网项目用的挺多的,将关键的通信技术抽离出来,单独弄成工具。  最近调绞车,遇到了modbustcp,正好有设......
  • Qt实现字符验证码相关功能
            本文主要介绍了Qt实现自定义验证码控件的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值。        验证码的原理基于人类视觉和计算机视觉的差异性。通过给用户显示一些难以被机器识别的图形或文字,让用户进行人机交......
  • QT--SQLite
    配置类相关的表,所以我使用sqlite,且QT自带该组件;1.安装sqlite-tools-win-x64-3460000、SQLiteExpert5.4.31.575使用SQLiteExpert建好数据库.db文件,和对应的表后把db文件放在指定目录./db/program.db;2.选择sql组件3.新增数据库处理类,在使用数据库的地方调用类成员函数......
  • qt 用数据画一个图,并表示出来
    1.概要想用数据绘制一个画面,看有相机到播放的本质是啥。要点  //创建一个QImage对象,指定图像的宽度、高度和格式  QImageimage(width,height,QImage::Format_Grayscale8);  //将像素数据复制到QImage对象中  memcpy(image.bits(),pixelData,width......
  • 关于Qt模型插入最后一行数据中存在未填满的项,点击导致崩溃的解决办法
    在使用Qt模型视图框架的时候,你可能会遇见这种情况:给QTableView设置设置模型的时候,网模型里面插入数据,因为数据是一行一行插入的,即要使用model的appandRow函数,但有时候最后一行数据没有填满一行,但是没有填满的那一部分仍然可以点击,如下代码:while(query.next()){ProductInf......
  • Qt:10.显示类控件(QLabel-显示文本或图像的控件、QLCDNumber -显示数字的特殊控件、QPr
    目录一、QLabel-显示文本或图像的控件:1.1QLabel介绍:1.2设置文本格式——textFormat属性:1.3设置图片——pixmap属性:1.4自动缩放——scaledContents属性:拓展:resizeEvent方法:1.5内容对齐方式——alignment属性:1.6自动换行——wordWrap属性:1.7 文本缩进——indent属性......