2010-12-11 64 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