Qt应用程序框架中的分段错误

时间:2010-05-28 23:16:26

标签: qt segmentation-fault

这会产生一个分段错误,因为“QColor colorMap [9]”;如果我删除colorMap,分段错误就会消失。如果我把它放回去。它回来了。如果我做了一个干净的所有然后建立所有,它就消失了。如果我增加它的数组大小,它会回来。另一方面,如果我减少它,它不会回来。我累了将这个数组添加到另一个项目中

可能会发生什么。我真的很想知道。我删除了该课程中的其他所有内容。子窗口小部件用于在QMainWindow中提升窗口小部件。

class LevelIndicator : public QWidget  
{  
public:  
    LevelIndicator(QWidget * parent);  
    void paintEvent(QPaintEvent * event );  
    float percent;  
    QColor colorMap[9];  
    int NUM_GRADS;  
};  

错误发生在ui_mainwindow.h中的其中一行:

    hpaFwdPwrLvl->setObjectName(QString::fromUtf8("hpaFwdPwrLvl"));

    verticalLayout->addWidget(hpaFwdPwrLvl);

我知道我提供的东西不多,但我会给应用程序添加一些东西。我试图看看是否有人对此有快速的答案。

2 个答案:

答案 0 :(得分:3)

  

如果我做了一个干净的所有,然后建立所有,它就会消失。

这使得听起来好像您的构建系统没有识别依赖关系,并且对该类定义的更改不会触发重新定义应该在定义更改时重新编译的内容。

确保class LevelIndicator只在一个地方定义(通常是任何需要使用LevelIndicator对象的模块都包含的头文件)。还要确保LevelIndicator个对象的全局/静态实例遵循一个定义规则。

答案 1 :(得分:2)

首先它可能不是QColor,这可能只是改变了内存布局,足以让缓冲区溢出其他地方触发段错误 - 尝试不同大小的QColor .. [1]例如。

可以将QColor用作这样的数组,它是否具有正确的默认ctor?