2010-12-11 93 views
1

如在標題中如何檢查QWidget中的子類是否存在?如何檢查Qwidget是否存在

當我嘗試類似的東西,它把應用程序的最終拋出一個異常

void MainWindow::slotAddLoginData() { 
    if(!addLoginData) { 
     addLoginData = new AddLoginData(this); 
     connect(this, SIGNAL(setEnabledALDbtnOK(bool)), 
     addLoginData, SLOT(btnOkEnabled(bool))); 

    } 
    addLoginData->show(); 
    addLoginData->activateWindow(); 

} 
+0

它在哪裏破壞?它拋出什麼錯誤? – 2010-12-11 21:15:30

+0

程序意外結束。當我刪除「if」語句時,一切正常 – sebastian 2010-12-11 21:30:02

+1

使用調試器(例如\ * NIX系統上的GDB)運行它,並告訴我們它在哪裏斷開。 – 2010-12-11 21:36:10

回答

0

一種可能性是,你沒有初始化addLoginData。使用這樣的事情在這種情況下:

MainWindow::MainWindow() 
    : addLoginData() 
    // ... 
{ 
    // ... 
} 
1

它看起來像addLoginData將不會被初始化

1

正如其他人所說,addLoginData未初始化。除非你初始化addLoginData 0 所以,喬治說,對其進行初始化,除非做出

if(!addLoginData) { ... }

..

MainWindow::MainWindow() : addLoginData(0)

(注意:你不能這樣做「0」)

+0

'addLoginData()'和'addLoginData(0)'在這裏完成同樣的事情 - 默認初始化意味着在標量類型的情況下爲零初始化。 [這裏](http://stackoverflow.com/questions/936999/what-is-the-default-constructor-for-c-pointer)。 – 2010-12-20 14:03:38