QT开发中文网

void Widget::on_btn_pic_clicked() { if(ui->listWidget->count()==0){ QMessageBox::warning(this,"警告","你还没有好友,请先添加好友,再聊天吧!"); return; } QString path=QFileDialog::getOpenFileName(this,"选择图片",".","(*.png *.jpeg *...

根据代码,出现 “QIODevice::read (QFile, “C:\Users\asua\Pictures\%~2YT]XFRRZVGDDF]@3Q4_3.png”): device not open” 和 “QIODevice::write (QTcpSocket): Called with maxSize < 0” 的错误可能是由于以下原因:

  1. 文件未成功打开:在 Widget::on_btn_pic_clicked() 函数中,如果文件无法以只读模式打开,file.open(QIODevice::ReadOnly) 会返回 false。这可能是因为文件路径不正确或者没有足够的权限访问该文件。请确保你提供的图片路径是有效的,并且你有足够的权限来读取该文件。

  2. 传输数据长度问题:在 sendData() 函数中,len=file.read(buf,sizeof(buf)) 返回值表示实际读取到的字节数。然后你使用 len=file_socket->write(buf,len) 发送数据。但是在某些情况下,可能会发生网络缓冲区已满导致写入失败,返回负数(例如 -1)。这也可能导致 sendedSizefileSize 不一致。

针对上述问题,你可以进行以下调整和检查:

  • 确保图片路径是正确的,并且具有可读权限。
  • 检查在 file.open(QIODevice::ReadOnly) 后是否成功打开了文件。可以添加日志语句来输出相关信息。
  • 在发送数据时,检查返回值并处理异常情况。例如,如果 len 返回负数,表示写入失败,则需要处理这种情况。
  • 确保网络连接正常并且没有被其他操作中断。

如果你提供更多上下文信息或错误日志,我们可以更好地帮助你解决问题。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=9320

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?