そもそも近現代の GUI toolkit は関数ポインタと引数ポインタなどを利用してウィジェットが発するイベントを特定の関数呼び出しにフックするみたいな形で実装されることも多くて、そのスタイルだと継承の木構造がどうとかは割とどうでもいい。なぜなら挙動はイベントと関数 (or 匿名関数) の紐付けによって定義されるものであって、型に紐付いた関数の実装によって定義されるものではなくなるから
もちろんそのイベント (特定フレームワークのように slot と呼んでてもいいけど) をどうウィジェットから提供するかはいろいろな設計が考えられるし、そこでやっぱり継承を使おうという判断も不可能ではないけど、それにメリットがあるかというとそうでもないはず