c++ - 使用 QFileDialog 后程序在几秒钟后崩溃

标签 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 位架构时才会发生崩溃。

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/

相关文章:

c++ - 在 Windows 上编译 libssh2

c++ - 为什么 vector 被视为按值传递,即使它是通过 const 引用传递的?

c++ - std::vector::assign 等效于 QVector

android - Android 7.x 上的 Samsung Galaxy 设备出现大量 OutOfMemoryError

javascript - 在 addeventlistener 回调函数内发出 HTTPS 请求时,Electron 崩溃

actionscript-3 - Flex Printjob崩溃

c++ - 从函数返回时指针损坏

c++ - 将内部版本号/内部版本 ID 嵌入到 Visual Studio 2008 中的项目中

c++ - 高 dpi 和低 dpi 系统的 Qt Creator 行编辑和按钮大小

c++ - 在QT中释放动态分配的内存