我正在使用QFileDialog
均为getOpenFileName
和getSaveFileName
。我在网络上有一个文件(慢速连接),我加载了getOpenFileName
。然后,如果我尝试创建新的QFileDialog
,则需要永久加载。QFileDialog慢速网络
我用Process Monitor查看了进程,我可以看到它在我上次打开文件的网络位置的每个文件中缓慢爬行。在我重新启动计算机之前它一直很慢。我能做些什么来加快速度?
下面是一些代码:
打开文件对话框
QString filename;
QFileDialog fd(this);
filename = fd.getOpenFileName(this,tr("Open CSV File"), ".",tr("CSV Files (*.csv)"));
保存文件对话框
QString filename;
QFileDialog fd(this);
filename = fd.getSaveFileName(this,tr("Save CSV File"), ".",tr("CSV Files (*.csv)"));
谢谢。
要迂腐,你*可以*做些什么。您可以自己重新实现这些功能,并以不同方式处理网络响应缓慢(例如,通过显示错误 - 显然无法更快地获得实际结果)。 –
@JesperJuhl是的,不幸的是,大多数文件系统访问是同步的,因为操作系统的内部经常被破坏,并且完全隐藏了现实世界的异步性。所以例如通常您可以异步地从大文件中读取块,但即使您尝试将其作为重叠/异步操作执行,也会阻止读取目录内容。你可以做的最好的办法是把它全部扔进工作者线程并显示你自己的对话框,并在OS调用返回时停止线程。这是浪费和伤心。原生对话可能是异步...但不是因为VFS dir迭代不是:( –
所以,正如我所说...;) –