Qt信号和槽的连接方法

官方文档

查看手册

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看出,如果想要把信号和槽函数联系起来,通过connect()方法即可;connect()的参数:
sender:产生信号的对象
signal:信号的名字
method:槽函数

示例

UdpReceiver::UdpReceiver(QObject *p) : QObject(p)
{
     //udp通信
	uSocket = new QUdpSocket; 
	//绑定ip和端口号
	uSocket->bind(QHostAddress("127.0.0.1"), PORT);
	//连接信号和槽函数
	connect(uSocket, SIGNAL(readyRead()), SLOT(receive()));
}

readyRead()是QUdpSocket类提供的信号,receive()是自己定义的槽函数,是UdpReceiver这个类的方法

void UdpReceiver::receive()
{
	QByteArray byteArray;
	while (uSocket->hasPendingDatagrams())
	{
		byteArray.resize(uSocket->pendingDatagramSize());
		uSocket->readDatagram(byteArray.data(), byteArray.size());
		//抛出数据改变的信号
		emit(datachanged(byteArray));
		qDebug() << toHex(byteArray);
	}
}

QString UdpReceiver::toHex(const QByteArray &byteArray)
{
	QString str;
	for (int i = 0; i< byteArray.length(); i++)
	{
		QString byteStr = QString::number(static_cast<uchar>(byteArray[i]), 16);
		if (byteStr.length() == 1) str = str + "0" + " " + byteStr;
		else str = str + " " + byteStr;
	}
	return str;
}

我们可以去官方文档里面看一下QUdpSocket提供了哪些信号

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

按照顺序找下来,就看到了我们这里使用的信号了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值