我想第一次使用 QFtp 并搜索了很多以了解它应该如何使用。这是一个典型的例子:
#include <QCoreApplication>
#include <QFtp>
#include <QFile>
int main(int argc, char ** argv)
{
QCoreApplication app(argc, argv);
QFile *file = new QFile( "C:\\Devel\\THP\\tmp\\test.txt" );
file->open(QIODevice::ReadWrite);
QFtp *ftp = new QFtp();
ftp->setTransferMode(QFtp::Active);
ftp->connectToHost("ftp.trolltech.com");
ftp->login();
ftp->cd("qt");
ftp->get("INSTALL",file);
ftp->close();
QObject::connect(ftp, SIGNAL(done(bool)), &app, SLOT(quit()));
int ret = app.exec();
delete ftp;
delete file;
return ret;
}
问题:
据我了解,需要 QCoreApplication 应用程序来处理“完成”信号,该信号在 ftp-get 完成时发出。现在,ftp->get
在连接之前甚至在应用程序处理程序运行之前调用 (app.exec() 之后调用)。
如果文件传输在“connect”语句之前已经完成,会发生什么?事实上,这不会发生,但我可以ftp->close()
在 connect(...) 之间设置一个人为的延迟,比如 1 分钟。在此期间,ftp get 肯定会完成。会发生什么?