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

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就没问题了,麻蛋

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

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?