我正在玩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;
}

但这并不“正确”。 。

最佳答案

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

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

关于c++ - 如何将QProgressBar的 "cast"qint64很好地转换为int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4931780/

10-09 21:16