qt智能指针使用和data()属性解析

http://t.csdn.cn/bT1in

这个只是一个写的还不错的例子

http://t.csdn.cn/h5Lrm

这个里面写了data这个属性的解释

1)、data()   :    返回此对象所引用的指针的值 

*QSharedPointer::data() const注意:不要删除这个函数返回的指针,也不要将它传递给其他可能删除它的函数,包括创建QSharedPointer或QWeakPointer对象

 

所以就相当于返回指针所指向的对象的引用

 

有时候在Connect的时候,需要智能指针访问data才能进行信号与槽的连接

例如

connect(m_papphelper.data(),信号,对象,槽函数)

注意,m_papphelper是共享指针

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt解析UDP协议包可以使用QUdpSocket类,该类提供了读取和写入UDP数据报的方法。以下是一个简单的示例,演示如何使用QUdpSocket类解析UDP数据报: ```cpp void MyObject::readPendingDatagrams() { while (udpSocket->hasPendingDatagrams()) { QByteArray datagram; datagram.resize(udpSocket->pendingDatagramSize()); QHostAddress sender; quint16 senderPort; udpSocket->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort); // 在这里对数据报进行解析 // datagram.data()指向数据报的首字节 // datagram.size()是数据报的大小(字节数) // sender是发送方的IP地址 // senderPort是发送方的端口号 } } ``` 在上述示例中,`udpSocket`是一个QUdpSocket对象,它的`readPendingDatagrams()`方法用于读取所有待处理的数据报。如果没有待处理的数据报,该方法会立即返回。 在while循环中,我们使用`udpSocket`对象的`hasPendingDatagrams()`方法检查是否有待处理的数据报。如果有,我们先创建一个QByteArray对象`datagram`,它的大小等于数据报的大小,然后调用`udpSocket`的`readDatagram()`方法读取数据报。`readDatagram()`方法的第一个参数是指向数据报数据的指针,第二个参数是数据报的大小,第三个参数是发送方的IP地址,第四个参数是发送方的端口号。 在`readPendingDatagrams()`函数中,我们可以对数据报进行解析。`datagram.data()`指向数据报的首字节,`datagram.size()`是数据报的大小(字节数),`sender`是发送方的IP地址,`senderPort`是发送方的端口号。 除了使用`readDatagram()`方法读取数据报之外,还可以使用`waitForReadyRead()`方法等待数据报的到来,或者使用`bind()`方法将`QUdpSocket`对象绑定到特定的IP地址和端口号上,以便在该地址和端口上监听UDP数据报。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值