Qt QMap insert/insertMulti

Qt QMap insert/insertMulti,qt,qmap,Qt,Qmap,我正在visual studio 2010中使用Qt5加载项。我试图用char ID和QWidget*值填充堆上的QMap,并用QWidget*填充QVBoxLayout。我从insert函数内对detch的QMap调用中获得运行时中断。我已经尝试使用std::shared_ptr和小部件地址。任何人都对可能发生的事情有任何想法。如果您能提供一些复制问题的最小代码示例,或者至少从出现问题的代码中提取一些内容,这会有所帮助。就个人而言,我过去在使用QMap时由于多线程使用(不受支持)而遇到过问题,

我正在visual studio 2010中使用Qt5加载项。我试图用char ID和QWidget*值填充堆上的QMap,并用QWidget*填充QVBoxLayout。我从insert函数内对detch的QMap调用中获得运行时中断。我已经尝试使用std::shared_ptr和小部件地址。任何人都对可能发生的事情有任何想法。

如果您能提供一些复制问题的最小代码示例,或者至少从出现问题的代码中提取一些内容,这会有所帮助。就个人而言,我过去在使用QMap时由于多线程使用(不受支持)而遇到过问题,但在不了解更多有关您的问题的情况下,这只是一个猜测。我不会跨越线程。对于解析xml标记和基于属性的不同小部件,几乎是一个循环。在qhboxlayoutNOTE的子类中,我将一个char*键和小部件的地址作为值放入一个qmap中:qmap insert中的第一行代码是一个内部调用dettach,它在这里中断。AFAIK qmap是隐式共享的。如有必要,可在对其执行写入操作时使用分离来创建副本(写入时)。如果它在那里崩溃,我最好的猜测是您的QMap实例没有正确初始化,这会在访问内部数据指针时立即导致问题。但可以肯定的是,我想有些代码还是不错的;)我下班回家后会放一些。当我把它放在堆上时,这可能成为一个问题,但我只是这样做了,因为当它很浅(在堆栈上)时,我得到了相同的崩溃。过一会儿我会编一些代码