首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QT 5.2.0 getOpenFileName慢速

QT 5.2.0 getOpenFileName慢速
EN

Stack Overflow用户
提问于 2014-02-04 14:19:00
回答 2查看 1.5K关注 0票数 4

当调用getOpenFileName时,函数经常挂起5秒左右。实际调用是:

代码语言:javascript
复制
  QString fileName = QFileDialog::getOpenFileName(this,
     tr("Open XML"),"D:\\xml_reader\\data\\",tr("XML Files (*.xml *.*)"));

我要发送到的文件夹只包含一个文件,所以不是因为文件数的原因。我在Debug和Release中都尝试过,它们都遇到了同样的问题。

我在网上看到其他人也有类似的问题,但没有解决方案。我在过去使用过其他版本的QT,从未遇到过这个问题。

EN

回答 2

Stack Overflow用户

发布于 2019-11-14 05:22:11

我最近遇到了同样的问题,我的修复方法是从windows文件资源管理器左侧的快速访问列表中删除一个坏的网络位置。无法再访问网络位置。

在实际选择文件和点击取消或关闭按钮时,它在释放和调试模式下都会滞后。

对话框会快速打开,但在关闭对话框后,我的应用程序会延迟2-5秒,然后继续执行下一条指令,这是我通过单步执行调试中的代码并在release中的下一行打开一个视觉提示来确认的。

最终帮助我意识到问题的是,当它在一个完全不同的应用程序中再次发生时,它不是由我开发的。

票数 2
EN

Stack Overflow用户

发布于 2014-02-04 17:25:51

  1. 不要在调试器下运行你的应用。
  2. 当你加载你的应用时,你可能会强制加载comdlg32.dll。

附注:QT - is QuickTime,您正在使用Qt

@JohnNeuhaus的特别摘要更新:

问:为什么getOpenFileName很慢?

答:原因:Comdlg32.dll是第一次调用getOpenFileName时开始加载的延迟加载库。这个加载时间很长。如果连接了调试器,则动态链接时间可能会增加(因为需要加载.pdb)。

解决方法:在应用程序启动时直接加载`Comctl32.dll‘:

代码语言:javascript
复制
QLibrary lib( "Comctl32.dll" );`
lib.setLoadHints( QLibrary::ResolveAllSymbolsHint );
lib.load();
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21545319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档