在控制台应用程序中使用QFtp

时间:2013-01-17 23:36:13

标签: qt ftp console

我是使用Qt的高级初学者,我正在尝试编写一个使用QFtp的控制台应用程序。应用程序本身基本上只是程序代码,但由于QFtp异步,这让我发疯。我需要测试多个ftp下载是否成功,但代码没有阻塞,因此测试总是失败。到目前为止,最好的解决方案是创建一系列信号和插槽,以菊花链形式连接ftp代码和程序部分。似乎必须有更好的方法。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用QEventLoop等待信号。只需将信号连接到QEventLoop::quit(),然后拨打QEventLoop::exec()

QFtp ftp;
QEventLoop eventLoop;
connect(&ftp, SIGNAL(commandFinished(int,bool)), &eventLoop, SLOT(quit()));
eventLoop.exec();

答案 1 :(得分:0)

由于它是异步的,你最好通过信号和插槽机制跟踪它,但这确实会破坏你的程序逻辑。 Qt中唯一的FTP默认选项是QNetworkAccessManager,但这也是异步的,所以无论你选择什么,你都必须使用信号/插槽系统跟踪它何时完成。

可以使用QTcpSocket并编写自己的FTP代码,它允许你阻止调用线程,直到它返回某些条件,但你必须编写更多的代码做你想做的事。