私はグレードを使用して .ui ファイルを作成し、それを使用しGtkBuilder
てその .ui ファイル全体を C プログラムにロードしているため、すべてのウィジェットやものはビルダー ファイル自体から作成されます。
以前は、コード自体からのみウィジェットを作成していたので、2 番目の引数がgpointer
変数であるため、任意のタイプのデータを Callback に渡すことができ、いつでもカスタムメイドの構造体へのポインターを作成し、任意のタイプのデータを渡すことができました。コールバック。
しかし今、信号に接続するために、この単純な関数を使用しています:
gtk_builder_connect_signals(builder, NULL);
へbuilder
のポインタGtkBuilder
です。
これにより、glade ファイルで言及されているすべてのシグナルが、.c ファイルで定義されている関数のシグナルと接続されます。ウィジェット以外の user_data を渡す規定はありません (それ自体は、glade でのみ定義できます)。
あらゆるタイプのデータをコールバックに渡すことができるように、誰かが解決策を教えてくれますか? 時間を大幅に節約できるので、空き地を離れたくないので、コードのみでウィジェットを作成する従来の方法に切り替えたくありません。
g_connect_signal() と gtk_builder_connect_signals() の両方を使用した例が役に立ちます。この場合、シグナル接続をオーバーライドするために最初に呼び出すもの。