QT 5.2.0 getOpenFileName慢

时间:2014-02-04 06:19:00

标签: c++ qt

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

  QString fileName = QFileDialog::getOpenFileName(this,
     tr("Open XML"),"D:\\xml_reader\\data\\",tr("XML Files (*.xml *.*)"));

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

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

2 个答案:

答案 0 :(得分:0)

  1. 不要在调试器下运行您的应用程序。
  2. 加载应用时,您可能会强行加载Comdlg32.dll。
  3. P.S。 QT - 是QuickTime,你正在使用Qt

    @JohnNeuhaus的特别“摘要”更新:

    Q :为什么getOpenFileName很慢?

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

    解决方法:在应用程序开始时直接加载`Comctl32.dll':

    QLibrary lib( "Comctl32.dll" );`
    lib.setLoadHints( QLibrary::ResolveAllSymbolsHint );
    lib.load();
    

答案 1 :(得分:0)

我最近遇到了同样的问题,对我来说,解决方法是从Windows文件资源管理器左侧的快速访问列表中删除错误的网络位置。 无法再访问网络位置。

在实际选择文件时以及在单击“取消”或“关闭”按钮时,它在发布和调试模式下都会滞后。

对话框将快速打开,但是在关闭对话框后,我的应用将滞后2-5秒钟,然后继续执行下一条指令,我通过逐步调试代码并在下一条打开视觉提示来确认行中发布。

最终使我意识到问题的原因是当该问题再次发生在不是我制作的完全不同的应用程序中时。