QProgressbar和QNetworkReply信号 我用QT框架编写C++应用程序。 它应该通过http下载一个文件,并用QProgressbar显示下载进度-但我没有让这部分工作
示例代码:QProgressbar和QNetworkReply信号 我用QT框架编写C++应用程序。 它应该通过http下载一个文件,并用QProgressbar显示下载进度-但我没有让这部分工作,c++,qt,networking,qt4,C++,Qt,Networking,Qt4,示例代码: 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))); 如果运行代码
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)
但是说:
此信号适用于连接到QProgressBar::setValue()以更新提供用户反馈的QProgressBar
我的代码出了什么问题?如何使其工作?
我正在Linux下运行Qt4.5.3
谢谢你的帮助,对不起我的英语 是的,没错,你必须在你的SIGNAL/SLOT方法中设置匹配的参数。。。无论如何,在Qt示例和演示中,您可以在示例“FTP客户端”中找到以下代码: 您可以复制该部分并以这种方式更新进度条 因此,我建议:
connect(downloader, SIGNAL(downloadProgress(qint64,qint64)), pbar, SLOT(updateDataTransferProgress(qint64,qint64)));
我希望它能帮助你
更多信息:是的,没错,您必须在信号/插槽方法中设置匹配参数。。。无论如何,在Qt示例和演示中,您可以在示例“FTP客户端”中找到以下代码: 您可以复制该部分并以这种方式更新进度条 因此,我建议:
connect(downloader, SIGNAL(downloadProgress(qint64,qint64)), pbar, SLOT(updateDataTransferProgress(qint64,qint64)));
我希望它能帮助你
更多信息:我引用文档: 例外情况下,如果信号具有更多 参数,而不是它所在的插槽 连接到,附加的 只需忽略以下参数:
在您的案例中,问题实际上是参数类型自qint64以来不匹配!=int,没有包装器或类型转换就不可能完成任务。我引用文档: 例外情况下,如果信号具有更多 参数,而不是它所在的插槽 连接到,附加的 只需忽略以下参数:
在您的案例中,问题实际上是参数类型自qint64以来不匹配!=int,没有包装器或类型转换就不可能完成任务。嘿,谢谢你的回答!它应该这样工作,但我认为它不像没有“连接器”的解决方案那样“性感”。也许这是不可能的/既然他们也在用这种方式,我认为这是不可能的,至少目前是这样!很高兴它帮了你…嘿,谢谢你的回答!它应该这样工作,但我认为它不像没有“连接器”的解决方案那样“性感”。也许这是不可能的/既然他们也在用这种方式,我认为这是不可能的,至少目前是这样!很高兴它帮助了你。。。
connect(downloader, SIGNAL(downloadProgress(qint64,qint64)), pbar, SLOT(updateDataTransferProgress(qint64,qint64)));
connect(ftp,
SIGNAL(rawCommandReply(int, const
QString &)),
this, SLOT(checkErrorCode(int)));