我正在制作应用程序来提高我们公司的生产力。它读取整个 .csv 文件并将其内容以 .pdf 格式放入表格中。我使用 QT 作为 GUI 库,使用 PoDoFo 作为 .pdf 库。
问题是,在我让用户选择要从中获取数据的 .csv 文件和保存生成的 .pdf 的路径后,程序在两分钟左右崩溃。具体情况因情况而异。我能够将问题“跟踪”到 QFileDialog。
我是否在堆栈上创建它并不重要,或者动态地仍然会发生同样的事情。从您在 GUI 中按下“选择”(打开文件对话框)的那一刻起,程序将在大约两分钟内崩溃,这在 Visual Studio Community 2017 中是这样的
我能够创建简约的代码来重现错误。我使用的是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 位架构时才会发生崩溃。
EDIT4:仅在使用 native 文件对话框时才会发生崩溃。如果设置了选项QFileDialog::DontUseNativeDialog
,则不会发生崩溃。
最佳答案
不确定这是否相关,但我遇到了一个问题,如果我给出 FileDialog 的路径,它会花费几秒钟的时间,因为它以某种方式将其解释为网络路径。为了解决这个问题,我给了它一个前缀为“file://”的路径。为了实现这一点,我这样做了:
QUrl().fromLocalFile(cell_info->progDir()).toString()
原始路径来自cell_info->progDir()
。不知何故,该路径是常规的 Windows 特定路径。一旦我将它包装在 from LocalFile 调用中,它就会生成我使用它的所有平台所需的内容。
同样,我不知道这是否与您的问题有关,但这听起来很可疑,就像它在后台处理某些事情一样。如果这不相关,请随意忽略。
关于c++ - 使用 QFileDialog 后程序在几秒钟后崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55569734/