c++ - 使用 QFileDialog 程序几秒钟后崩溃
问题描述
我正在制作应用程序来提高我们公司的生产力。它读取整个 .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:只有在使用本机文件对话框时才会发生崩溃。如果QFileDialog::DontUseNativeDialog
设置了选项,则不会发生崩溃。
解决方案
不确定这是否相关,但我遇到了一个问题,如果我给出 FileDialog 的路径,它会在几秒钟内消失,因为它以某种方式将其解释为网络路径。为了解决这个问题,我给了它一个前缀为"file://"
. 为了做到这一点,我这样做了:
QUrl().fromLocalFile(cell_info->progDir()).toString()
原来的路径来自cell_info->progDir()
. 不知何故,该路径是常规的 Windows 特定路径。一旦我将它包装在 from LocalFile 调用中,它就会为我使用它的所有平台生成我需要的东西。
再说一次,我不知道这是否与您的问题有关,但这听起来很可疑,就像它在某些事情的背景中逐渐消失一样。如果这不相关,请随意忽略。
推荐阅读
- c++ - 在 gdb 中使用 throw 语句跳过函数不会让我去 catch 语句
- android - 除了底部导航视图,如何使片段的布局具有屏幕高度的高度?
- ruby - 如何将当前类引用为 YARD 中的返回类型?
- excel - PySpark 中是否有等效的 ExcelWriter?
- azure-active-directory - 无法使用 Microsoft Graph API 从 Azure AD 获取订阅列表
- dart - 我正在使用 dio 库进行 http 响应,但没有更新 listview 颤振
- delphi - 是否可以在 Delphi 中为 Windows 应用商店创建 MS Office 插件?
- python-3.x - 实现 for 和 if 在 reduce 函数中
- css - 如何根据其值单独设置 ngFor 的每个元素的样式?
- android - 我正在尝试从数组列表中的房间数据库中获取数据,但它仅显示 android 中的最后一条记录