Qt(QFtp)问题

时间:2010-01-18 12:28:03

标签: c++ qt ftp

您好我正在学习qt并尝试使用QFtp上传文件我写了下面的代码

this->connect(this->ftp, SIGNAL(done(bool)), this, SLOT(ftpDone(bool)));
this->connect(this->ftp, SIGNAL(dataTransferProgress(qint64, qint64)), this, SLOT(dataTransferProgress(qint64, qint64)));
this->connect(this->ftp, SIGNAL(stateChanged(int)), this, SLOT(stateChanged(int)));

.....

if(this->file.open(QIODevice::ReadWrite))
{
    this->ftp->setTransferMode(QFtp::Active);
    this->ftp->connectToHost(this->settings->getHost());
    this->ftp->login(this->settings->getUser(), this->settings->getPassword());
    this->ftp->cd(remoteFilePath);
    this->ftp->get(this->fileName, &this->file);
    this->ftp->close();
}

它有点停止它在dataTransferProgress中报告它是0 / XXX但是从不再调用插槽(使用相同的代码但使用get函数我可以下载文件并且它可以正常工作)我在超时后得到的错误是QFtp :: UnknownError。

1 个答案:

答案 0 :(得分:2)

假设get之前的所有命令都成功,很可能是在get完成之前关闭了连接。您应该保存get返回的标识符,并在使用该标识符调用close信号时调用commandFinished

注意:除setTransferMode外,您使用的所有方法都是异步的。它们将按照调用它们的顺序执行,但由于您没有执行任何错误检查,因此可能会失败,其余的仍然会被尝试,这可能会导致一些混乱。

执行此操作的正确方法是首先connectToHost,如果成功(您可以使用commandFinished信号跟踪此信息),请致电login等。