2016-04-15 5 views
1

ウィジェットがすでにsetupUi"blessing"を受け取っていて、すべてのサブウィジェットを既に構築しているかどうかを知る必要があります。setupUiがすでに呼び出されているかどうかを知る方法

これには方法がありますか?または、これが以前に行われたかどうかをコードで追跡する必要がありますか? ありがとう

答えて

1

ウィジェットが空である必要がありますか?そうでない場合は、作成を遅らせ、オブジェクトを作成すると同時にsetupUiを呼び出すことができます。ポインタが設定されているかどうかを確認することができます。

MyClass::MyClass() : m_ui(nullptr) 
{} 

MyClass::initialize() 
{ 
    if (m_ui == nullptr) 
    { 
     m_ui = new UiClass; 
     m_ui->setupUi(this); 
    } 
    // ... 
} 

setupUiが呼び出されたかどうかを知る必要がある理由は、使用する方法によって異なります。

+0

これはとても簡単でした.Uiのものにポインタを使用したことはありません。初期化を避けるためにQPointerを使う方がいいかもしれない – bibi

2

関数を呼び出す前にチェックする何らかのグローバル変数か関数内のローカル静的変数を使って、自分で追跡することができます。または、あなたのためのチェックを処理するstd::call_onceを使用することができます。

関連する問題