2010-12-11 24 views
1

タイトルのようにQWidgetの子クラスがどのようにチェックされていますか?Qwidgetが存在することを確認する方法

私は、それは一つの可能​​性はあなたがaddLoginDataを初期化していないことになり、アプリケーションのエンドスローエラーに

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

デバッガ(例えば、\ * NIXシステムのGDB)で実行して*どこに*壊れているかを教えてください。 –

答えて

0

を破るようなものを試してみてください。その場合にはこのようなものを使用します。

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

を初期化されていないように見えますaddLoginDataが初期化されていない、と述べています。あなたはこれを行うことはできません。

if(!addLoginData) { ... }

あなたはそれを作る以外、だから、ゲオルクが言ったように、それを初期化し0 にaddLoginDataを初期化しない限り...

MainWindow::MainWindow() : addLoginData(0)

(注意します"0")

+0

'addLoginData()'と 'addLoginData(0)'はまったく同じことを行います - デフォルトの初期化はスカラー型の場合はゼロ初期化を意味します。 [ここ](http://stackoverflow.com/questions/936999/what-is-the-default-constructor-for-c-pointer)。 –

関連する問題