5

我正在玩QFtp(是的..我知道)并且一切正常。

使用他们自己的示例中的代码作为指导。

http://doc.qt.io/archives/qt-4.7/network-qftp-ftpwindow-cpp.html

我遇到的唯一问题是在发送(或接收)大文件(比如 3 GB)时,进度条出现故障。

这是由于从 qint64 到 int 的转换:

void FtpWindow::updateDataTransferProgress(qint64 readBytes, 
    qint64 totalBytes) 
{
    progressDialog->setMaximum(totalBytes);
    progressDialog->setValue(readBytes);
}

我想知道在谷歌搜索大约一个小时并通过确保我不会超出范围来保持它“安全”之后,最好的处理方法是什么。

while (totalBytes > 4294967295UL)
{ 
   totalBytes = totalBytes/4294967295UL;
   readBytes = readBytes/4294967295UL;
}

但这并不“感觉”正确。.

4

2 回答 2

7

您可以让进度条以百分比的形式显示进度:

void FtpWindow::updateDataTransferProgress(qint64 readBytes, 
    qint64 totalBytes) 
{
    progressDialog->setMaximum(100);
    progressDialog->setValue((qint)((readBytes * 100) / totalBytes));
}
于 2011-02-08T10:20:15.977 回答
1

将进度条设置为 0-100 的范围,并显示读取的字节百分比,而不是尝试设置绝对值。

于 2011-02-08T10:19:32.750 回答