• 10176阅读
  • 2回复

如何在QProgressBar上显示QFile的copy进度? [复制链接]

上一主题 下一主题
离线lucllion
 
只看楼主 倒序阅读 楼主  发表于: 2008-03-31
— 本帖被 XChinux 执行加亮操作(2008-03-31) —
QProgressBar *progressBar = new QProgressBar;
QFile fromFile("C:\\test.doc");
QFile toFile("C:\\test1.doc");
fromFile.copy(toFile);
connect(&toFile, SIGNAL(bytesWritten(qint64)), progressBar, SLOT(setValue(int)));

想要在上面的程序中加入QProgressBar來显示copy进度,
看了Asistant的说明,
在最後面加上了connect的訊息
可是QFile的signal不能激活QProgressBar.

因此想請问是否有人作过file copy的进度显示,
或者提供小弟一个方向,
谢谢!
[ 此贴被lucllion在2008-03-31 19:47重新编辑 ]
离线tokens

只看该作者 1楼 发表于: 2008-03-31
signal 与slot的参数没配上吧.
头大,在学QT
离线lucllion
只看该作者 2楼 发表于: 2008-04-01
我修改了一下程序,
现在可以单纯只使用Qt4的class来处理copy file,
程序如下:
[CODE]
QProgressBar *progressBar = new QProgressBar;
QFile fromFile("C:\\test.doc");
QFile toFile("C:\\test1.doc");

qint64 nCopySize = fromFile.size();
progressBar->setMinimum(0);
progressBar->setMaximum(nCopySize);

for (qint64 i = 0; i < nCopySize; i++) {
    toFile.write(fromFile.read(i)); // write a byte
    fromFile.seek(i);  // move to next byte to read
    toFile.seek(i); // move to next byte to write
    progressBar->setValue((int)(i *100 / nCopySize));
}
[/CODE]

这次ProgressBar可以改变value了,
可是我发现copy的效率十分的低,
请问可以有方法增进copy的速度吗?
快速回复
限100 字节
 
上一个 下一个