2010-05-28 39 views
0

由於「QColor colorMap [9]」;會產生分段錯誤。如果我刪除colorMap,則分段錯誤消失。如果我把它放回去。它回來了。如果我乾淨一切,然後建立所有,它會消失。如果我增加它的數組大小,它會回來。另一方面,如果我減少它不會回來。我厭倦將此陣列添加到另一個項目中,並且Qt應用程序框架中的分段錯誤

可能發生什麼情況。我很想知道。我已經刪除了該班的其他所有內容。這個小部件子類用於在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); 

我知道我不是提供很多,但我會給ALINK到應用程序。我試圖看看是否有人對此有一個快速的回答。

回答

3

如果我乾淨所有然後建立所有,它會消失。

這使得它聽起來就好像你的編譯系統不能識別的依賴性和改變的那類定義不觸發重建的東西,應重新編譯的定義發生變化時。

確保class LevelIndicator在一個地方定義(通常這將是一個頭文件,被任何模塊需要使用一個LevelIndicator對象)。還要確保LevelIndicator對象的任何全局/靜態實例都遵循一個定義規則。

+0

你是對的。 'qmake'並不總是通過構建系統的其餘部分正確地傳播頭中的更改。 – 2010-05-29 00:28:21

+0

thx的提示 – 2010-05-29 00:43:02

2

首先,它可能不是QColor,可能只是簡單地改變內存佈局,以至於緩衝區溢出到其他地方會觸發段錯誤 - 嘗試使用不同的QColor尺寸。[1]例如。

QColor可以用作這樣的數組嗎?它是否有正確的默認ctor?

+0

生病檢查出來 – 2010-05-29 00:44:42