QProgressbar 和 QNetworkReply 信号
我正在使用 Qt 框架用 C++ 编写一个应用程序。 它应该通过 http 下载文件并使用 QProgressbar 显示下载进度 - 但我无法让该部分工作!
示例代码:
QProgressBar* pbar = new QProgressBar();
//calls the website and returns the QNetworkReply*
QNetworkReply* downloader = Downloader->getFile();
connect(downloader, SIGNAL(downloadProgress(qint64,qint64)), pbar, SLOT(setValue(int)));
如果我运行我的代码,则会出现以下错误:
QObject::connect: Incompatible sender/receiver arguments
QNetworkReplyImpl::downloadProgress(qint64,qint64) --> QProgressBar::setValue(int)
但是 QNetworkReply 的 Qt 文档 说:
该信号适合连接到 QProgressBar::setValue() 以更新提供用户反馈的 QProgressBar。
我的代码有什么问题以及如何让它工作? 我在 Linux 下运行 Qt 4.5.3。
感谢您的帮助,并对我的英语表示抱歉!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,没错,您必须在 SIGNAL/SLOT 方法中设置匹配的参数...无论如何,在 Qt 示例和演示中,您可以在示例“FTP Client”中找到以下代码:
...
您可以复制该代码部分并以这种方式更新您的进度条...
因此我建议:
我希望它对您有帮助!
更多信息:http://qt.nokia.com/doc/4.6/network -qftp.html
Yeah, it's right, you have to set matching arguments in your SIGNAL/SLOT methods... Anyway, in the Qt Examples And Demos, you can find the following code in the exemple "FTP Client" :
...
You could copy that part and update your progress bar this way...
I would therefore propose :
I hope it helps you !
More info : http://qt.nokia.com/doc/4.6/network-qftp.html
我引用文档:
在您的情况下,问题实际上是参数类型自 qint64 != int 以来不匹配,并且在没有包装器或类型转换的情况下不可能完成任务。
I quote the documentation:
In your case the problem actually was that parameter types didn't match since qint64 != int and it is impossible to accomplish the task without wrapper or type cast.