使用QFileDialog后,程序在几秒钟后崩溃

时间:2019-04-08 09:02:57

标签: c++ qt crash qfiledialog

我正在制作应用程序以提高我们公司的生产率。它读取整个.csv文件,并将其内容以.pdf格式放入表格中。我使用QT作为GUI库,使用PoDoFo作为.pdf库。

问题是,在我让用户选择.csv文件以从中获取数据并保存生成的.pdf的路径后,该程序在两分钟左右崩溃。视情况而定。我能够将问题“跟踪”到QFileDialog。

无论是在堆栈上创建它还是动态地发生相同的事情,都没有关系。从您在GUI中按下“选择”(打开文件对话框)的那一刻起,程序将在两分钟左右的时间内崩溃,从而在Visual Studio Community 2017中崩溃。

enter image description here

我能够创建简约的代码来重现错误。我正在使用Windows 7 Pro,Microsoft Visual Studio Community 2017,编译32位调试器

.h,.cpp,.ui文件:https://www.dropbox.com/sh/cf057p4lnumesol/AAD39zDJnrxGChXAuE7y27Kra?dl=0

任何帮助将不胜感激,我花了5天的空闲时间来解决这个问题。谢谢

编辑:我了解到“框架不在模块中”意味着Visual Studio在发生崩溃的那部分代码中没有调试符号,因为我自己没有自己构建qt,这是有道理的。

EDIT2:我正在使用QT Visual Studio Tools插件版本2.3.2 Qt版本是5.12.2

EDIT3:仅当编译32位arch时发生崩溃。

EDIT4:仅在使用本机文件对话框时发生崩溃。如果设置了选项QFileDialog::DontUseNativeDialog,则不会发生崩溃。

1 个答案:

答案 0 :(得分:0)

不确定是否相关,但是我遇到一个问题,如果我给FileDialog提供路径,它会磨掉几秒钟,因为它以某种方式将其解释为网络路径。为了解决这个问题,我给它提供了一个前缀为"file://"的路径。为此,我做到了:

QUrl().fromLocalFile(cell_info->progDir()).toString()

原始路径来自cell_info->progDir()。某种程度上,该路径是常规的Windows特定路径。一旦将其包装在LocalFile调用中,它便产生了我使用它的所有平台所需要的东西。

同样,我不知道这是否与您的问题有关,但听起来像是在后台将某些东西磨掉。如果没有关系,请忽略。