0

たくさんのスピンボタンを含むトップレベルのウィンドウがあります。

実際、ユーザーは必要なオブジェクトの数を選択し、ボタンを押した後、アプリケーションは何らかのアクションを提供します。

通常、私は構造体を使用しています

typedef struct
{
.......
GtkWidget *widget;
.......
} _GUI;

gtk_builder_get_object()によって初期化されたウィジェットをconatainsします。その後、私は彼らから情報を得ることができます。

しかし、ここでは多くの(> 50)スピンボタンをカバーする必要があり、またそれらのプロパティを設定する必要があります(たとえば、センシティブオプションを設定するなど)。

それで、質問は、トップレベルウィンドウのすべてのウィジェットをリストし(ボックスとエキスパンダーもあります)、どういうわけかそれらをタイプ(GtkSpinButton、GtkWidgetなど)で並べ替えることができますか?

特定のスピンボタンを直接指さないようにしたい。

4

1 に答える 1

2

トップレベルウィンドウ(GtkWindow)はGtkContainerのサブクラスであるgtk_container_forall()ため、たとえば、ウィンドウの子を反復処理するために使用できます。

次に、子ごとに、GObjectのAPI(G_OBJECT_TYPE()マクロマクロなど)を使用して、各子のタイプを把握できます。ウィンドウ内のネストされたコンテナにスピンボタンがある場合は、再帰する必要があるかもしれません。

于 2013-02-19T14:32:57.287 に答える