Qt应用程序在退出时崩溃

时间:2012-05-07 02:57:32

标签: c++ qt

我有一个使用Qt库用C ++编写的GUI。对于我的应用程序,我使用了TreeView对象。为了简化这个对象的重用,我创建了一个模板化的类,我的QObjects可以继承它。由于moc无法使用模板化类,因此我创建了这样的类:

class Tree : public QObject, public TreeTemplate<TreeType, TreeItemType>
{
     Q_OBJECT
};

这只允许Tree类使用moc(TreeTemplate不继承QObject或使用Q_OBJECT宏),同时获得模板的好处。

我的问题是退出应用程序崩溃后,即使我调用exit并跳过QApplication清理,也一定会崩溃。我在想moc的生成类可能存在问题,其中包含“static-meta-objects”

我不能使用valgrind,因为使用__ASM__它无法处理。 : - (

有没有人知道我使用模板化的Qt类(+ moc)设计继承了模板化的类会导致这个问题吗?

退出后崩溃在:libc.so。

1 个答案:

答案 0 :(得分:1)

AFAIK,你的方法不起作用。

{C}预处理器之前运行moc,这就是为什么QObject和模板化的类不起作用的原因 - 预处理器还没有生成类。您正在对类进行模板化,因此有关该类的moc数据将与预处理器期间从其创建的任何模板类的签名不匹配。