qq814437727 2017-07-05 00:29 采纳率: 100%
浏览 2714
已采纳

TcpSocket对象发送数据后,没有触发bytesWritten信号

connect(m_pClient, SIGNAL(bytesWritten(qint64)), this, SLOT(updateProgress(qint64)));//这里连接信号和槽

void SendFileDialog::readMessage()
{
QDataStream in(m_pClient);
in.setVersion(QDataStream::Qt_5_7);

quint8 isRecive;
in >> isRecive;
if (isRecive == 1)
{
    QByteArray block;
    ...............................
    m_bytesToWrite = m_allBytes - m_pClient->write(block);
    //这里发送数据后,正常地进入了updateProgress这个槽
}
else
{
...............................................
}

}
void SendFileDialog::updateProgress(qint64 byteNum)
{
.............................................
qApp->processEvents();
m_bytesWritten += byteNum;
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_5_7);
if (m_bytesToWrite > 0)
{
out << m_file->read(qMin(m_bytesToWrite, payloadSize));
m_bytesToWrite -= (int)m_pClient->write(block);
//但这里发送数据后,没有再进入updateProgress这个槽
block.resize(0);
}
else
{
m_file->close();
}
.........................................
}
这段代码是从书上搬下来的,以前都没问题,这次不知道怎么回事,求大佬救命啊!
还有,环境是vs2015+Qt5.7.1(但应该与这个无关吧)

展开全部

  • 写回答

1条回答 默认 最新

  • qq814437727 2017-07-05 00:55
    关注

    QDataStream::Qt_5_7改为QDataStream::Qt_4_8就没问题了,麻蛋

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
  • ¥15 没输出运行不了什么问题
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
  • ¥15 点云密度大则包围盒小
  • ¥15 nginx使用nfs进行服务器的数据共享
  • ¥15 C#i编程中so-ir-192编码的字符集转码UTF8问题
  • ¥15 51嵌入式入门按键小项目
  • ¥30 海外项目,如何降低Google Map接口费用?
  • ¥15 fluentmeshing