2010-12-11 29 views
1

Comme dans le titre comment vérifier que la classe enfant de QWidget existe?Comment vérifier que Qwidget existe

quand j'essayer quelque chose comme ça, il casse erreur de jet de fin d'application

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

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

} 
+0

Où cela casse-t-il? Quelle erreur lance-t-elle? –

+0

Fin de programme inattendue. Lorsque je supprime les instructions "if" tout va bien – sebastian

+1

Exécutez-le avec un débogueur (par exemple GDB sur les systèmes \ * NIX) et dites-nous * où * il se casse. –

Répondre

0

Une possibilité serait que vous ne l'avez pas initialisé addLoginData. Utilisez quelque chose comme ça dans ce cas:

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

Il ressemble addLoginData n'est pas initialisées

1

Comme d'autres l'ont dit, addLoginData n'est pas initialisé. Vous ne pouvez pas faire ceci:

if(!addLoginData) { ... }

À moins que vous initialisez addLoginData à 0. Ainsi, comme l'a dit Georg, l'initialiser, sauf que .. faire

MainWindow::MainWindow() : addLoginData(0)

(notez la "0")

+0

'addLoginData()' et 'addLoginData (0)' font exactement la même chose ici - l'initialisation par défaut signifie zéro initialisation dans le cas de types scalaires ... Voir par exemple. [ici] (http://stackoverflow.com/questions/936999/what-is-the-default-constructor-for-c-pointer). –