GTKを使用して診断ツールを作成しています。それぞれ異なるウインドウのいくつかのプロパティを、それぞれ独自のウィンドウで監視する必要があります。だから、いくつかの等しいウィンドウを開くことができるはずです。それぞれのウィンドウは、特定のオブジェクトに「添付」されています。たとえばボタンがクリックされると、適切なGTKコールバックが呼び出されます。しかし、すべてのウィンドウが等しいので、どのオブジェクトを変更する必要があるかを確認する自然な方法はありません。どのようにして各ウィンドウをオブジェクトに適切にマッピングできますか? 今はマップを使ってgtkウィンドウからオブジェクトにマッピングしていますが、ハックのように感じます。よりエレガントな方法でオブジェクトに関する情報を引き継ぐことができますか?あなたが機能g_object_set
とg_object_get
(とg_object_set_data
など)のファミリーを使用できるようにgtkウィンドウをデータにマップする方法
1
A
答えて
2
GtkWindow
は、GObject
の間接的なサブクラスです。
0
私は上記の解決策を探しているチームの1つです。これまでのところ、私はGvalueオブジェクトを作成し、それをGTKWindow window
に追加したいと思っています。
int pid = 12345;
GValue val = G_VALUE_INIT;
g_value_init (&val, G_TYPE_INT);
g_value_set_int (&val, pid);
g_object_set (G_OBJECT(window), "pID", &val, NULL); //add to GTKWindow
:
extern "C" G_MODULE_EXPORT void onButtonStepClicked(GtkObject* caller, gpointer data){
GValue _pid;
GtkWidget* window = gtk_widget_get_toplevel (GTK_WIDGET(caller));
g_object_get_property(G_OBJECT(window), "processID", &_pid);
cout << (int)g_value_get_int(&pID) << endl;
}
しかし、今、私は自分の端末に警告を得る:
のGLib-GObjectの-WARNING **:g_object_set_valistを:オブジェクトクラスGtkWindow' has no property named
pID '
私はしばらくグーグルで、私はまずこのプロパティをクラスにインストールする必要がある例を見つけました。これは理にかなっているのですか?
関連する問題
- 1. ウィンドウを3Dにマップする方法
- 2. Gtk +:カイロコンテキストからウィンドウのカーソルを設定する方法は?
- 3. OpenGLウィンドウをGTKビルダーに追加する
- 4. 親ウィンドウにデータを戻す方法は?
- 5. ウィンドウでデータをキャプチャする方法
- 6. hadoop reduce tasksでマップされたデータをマップする方法
- 7. GTK - ウィジェットのウィンドウをフルスクリーンに設定
- 8. gtk app cant gtk + dllsを使用するウィンドウのパス値を参照
- 9. GTKの他のウィンドウからウィンドウを生成するには? (Cを使って)
- 10. GTK + with adaを使用する方法
- 11. Jsonデータをjava beansにマップする方法は?
- 12. データ型をカスタム型にマップする方法?
- 13. 行と列にデータを表示する方法XAMLのウィンドウ8
- 14. GtkウィンドウのPNG(アルファチャンネル)スクリーンショットを取得するには?
- 15. コールバックの実行中に最上位のGTKウィンドウを非表示にする方法
- 16. ポップアップウィンドウから親ウィンドウにデータを渡す方法は?
- 17. Gtk#ウィンドウをどのように隠すのですか?
- 18. GTK(PyGTK)ノートブックのページにカスタムメニューを無効にする方法は?
- 19. JavaScriptでウィンドウとフレームの間でデータを共有する方法
- 20. GTKウィンドウのイベントが伝播しない
- 21. glade(GTK)ウィンドウのコードの作成とコンパイル
- 22. python gtkウィンドウが応答しない
- 23. GTKウィンドウDeleteEventが発射されない
- 24. Drupalのノードにあるopenlayersマップにgeofieldデータを表示する方法は?
- 25. Softiceのウィンドウに表示されるデータをテキストファイルにする方法
- 26. テーブルデータにcolumnNamesをマップし、そのデータのみをuigridに表示する方法
- 27. xlibのGTKウィンドウがサブウィンドウかトップレベルウィンドウかを決定する
- 28. Googleマップのカスタム情報ウィンドウを作成する現在の方法
- 29. GTK +ツールボタンのフォーカスグラブを無効にする方法
- 30. カイロ表面の上にGTKウィジェットを描画する方法
これは回答のための場所であり質問ではありません。ところで、私はあなたの問題は "pID"プロパティを設定し、 "processID"プロパティを取得しようとしていることです。 – liberforce
これは間違った配置(sry)の質問を編集している間に入力するだけの問題でした。問題はまだ残っています。 しかし、これは正常に動作するはずです。 – sobolog
ドキュメントから、g_object_get_propertyはバインディングにのみ使用されます。代わりに、g_object_getとg_object_setを使用してください。私はGObjectの専門家ではありませんが、取得する前にプロパティを作成する必要があると思います。 GObjectドキュメントのg_object_class_install_propertyおよびg_object_class_install_propertiesを参照してください。 – liberforce