ウィジェットのイベントConstructが発生するタイミング・その2
「……ということを書いていたところ、AddToViewportするまでConstructが働かないなら、むしろ最初にAddToViewportしちゃうという方法を教えてもらったよ」
妹「最初からAddViewportするとウィジェットが一瞬見えちゃうんじゃない?」
「それは大丈夫。ウィジェットを作成した段階でSetVisibilityは使えるから、AddToViewportの前にHiddenをセット出来る。もっとも表示タイミングの問題で、順番が逆でも大丈夫ではあるんだけど」
妹「そうすると表示する時と消す時はどうなるの?」
「こういう感じで、表示の切り替えだけする。AddToViewportやRemoveFromParentは使わない」
妹「見た目はこれでも問題なさそうだけど、実際は存在してるんだよね? それってちょっとモヤモヤするような」
「内部的には最初に表示するかしないかの分岐があって、それから細かい表示のあれこれをやるわけだから、Hiddenにした時点で表示速度への影響はほぼゼロになるはず。AddToViewportとRemoveFromParentを繰り返す方がメモリ使用の効率も悪そう」
妹「そう言われてみると、それでいいような気がしてきた。そっかあ、隠すだけでいいのかあ」
「あとウィジェットがHiddenになってると、マウス関係のイベントとか当然反応しないんだけど、イベントティックも動いてないということがわかった。表示に切り替えた直後から動き始めて、非表示になったらまた止まる。だから存在してない状態として扱っても問題無さそう」