QT 5.2.0 getOpenFileName slow

QT 5.2.0 getOpenFileName slow

本文关键字:getOpenFileName slow QT      更新时间:2023-10-16

调用getopenfilename时,该功能通常悬挂5秒钟左右。实际电话是:

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

我将其发送到的文件夹仅包含一个文件,因此不是因为文件计数。我在调试和发布中都尝试过,他们都经历了同样的问题。

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

我最近遇到了同样的问题,我的解决方法是从Windows File Explorer的左侧的快速访问列表中删除一个糟糕的网络位置。网络位置已不再可以到达。

它将在发行和调试模式中滞后,无论是在实际选择文件时还是点击取消按钮时。

对话框将很快打开,但是在关闭对话框后,我的应用程序将滞后2-5秒,然后继续进行下一个指令,我通过在调试中逐步浏览代码并在下一个指示中打开了一个视觉提示。发行中的行。

最终帮助我意识到的问题是,当它再次发生在我不是我制作的完全不同的应用中时。

  1. 请勿在调试器下运行您的应用程序。
  2. 加载应用程序时,您可能会强迫加载comdlg32.dll。

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();