qq814437727 2017-07-05 08:29 采纳率: 100%
浏览 2700
已采纳

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 08:55
    关注

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

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

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题