【发布时间】:2012-01-25 03:22:48
【问题描述】:
简短总结: 调用父 QWidget 构造函数时,我的 Qt 类在类构造部分崩溃。错误消息显示:“MyApplication.exe 中 0x0048fca9 处的第一次机会异常:0xC0000005:访问冲突读取位置 0x00000000。”
详情: 我正在做一个项目,为一个客户端添加一个覆盖用户界面,就像你在玩游戏时按“tab+shift”时的蒸汽一样。最初的应用程序是在 Visual Studio 环境中编写的,没有任何 UI 内容,因此我决定使用 Qt 来完成这项工作。
由于将项目转换为带有 .pro 文件的 Qt 项目非常复杂,因此我想基本上将 Qt 用作另一个库(包括 lib 和 include 文件夹并在项目中使用它)。
当我用 C 语言编写它时它工作得很好。菜单显示,但它根本不可点击。似乎为了使 Qt 事件循环工作,我必须将我的自定义小部件声明为一个类而不是一组 C 函数。
我将我的Qt类添加到项目中,修改include和lib文件夹,生成Moc文件,将其包含在项目中。一切都会编译,但是当我运行程序时,它会显示错误消息。跟踪代码显示构造函数在尝试构造QWidget时失败。
我在网上搜索过,但大多数教程都告诉你如何在 Qt Creator 或 Visual Studio Addin 中从头开始工作。
感谢 Smi 解决:
问题是我初始化 QApplication 晚于 QWidget 初始化。在调用构造函数之前添加 QApplication 解决了这个问题。
【问题讨论】:
标签: visual-studio qt user-interface