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

Куда он ломается? Какую ошибку он бросает? –

+0

Неожиданный конец программы. Когда я удаляю инструкции «if», все в порядке – sebastian

+1

Запустите его с помощью отладчика (например, GDB on \ * NIX systems) и сообщите нам, где * он сломается. –

ответ

0

можно было бы, что вы не инициализируется addLoginData. Используйте что-то подобное в этом случае:

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

Как уже говорили другие, addLoginData не инициализирован. Вы не можете сделать это:

if(!addLoginData) { ... }

Если вы не инициализировать addLoginData 0. Так что, как сказал Георг, инициализировать его, за исключением того, что делать ..

MainWindow::MainWindow() : addLoginData(0)

(обратите внимание, "0")

+0

'addLoginData()' и 'addLoginData (0)' делает то же самое здесь - инициализация по умолчанию означает нулевую инициализацию в случае скалярных типов ... См., например, [Здесь] (http://stackoverflow.com/questions/936999/what-is-the-default-constructor-for-c-pointer). –

Смежные вопросы