激活「行激活」信號後,如何獲取所選行的數據?我正在使用C語言。如何獲取激活行的數據GTK + C
void on_treeview1_row_activated()
{
//I want to get the data here
}
激活「行激活」信號後,如何獲取所選行的數據?我正在使用C語言。如何獲取激活行的數據GTK + C
void on_treeview1_row_activated()
{
//I want to get the data here
}
回調原型爲row-activated
信號應該是:
void user_function (GtkTreeView *tree_view,
GtkTreePath *path,
GtkTreeViewColumn *column,
gpointer user_data)
這意味着,你將不得不到TreeView(以及相關的模型/存儲)和所選路徑引用。這應該足以從激活的行提取數據。
假設你的模型/存儲具有作爲第一列一些整數作爲ID和串的第二列:
| ID | TEXT |
+----+------------+
| 12 | John Doe |
...
| 35 | Whatever |
+----+------------|
所以你的回調函數應該是這樣的:
void on_treeview1_row_activated(GtkTreeView *treeview,
GtkTreePath *path,
GtkTreeViewColumn *column,
gpointer userdata) {
gint int_data;
gchar *str_data;
GtkTreeIter iter;
GtkTreeModel *model = gtk_tree_view_get_model(treeview);
if (gtk_tree_model_get_iter(model, &iter, path)) {
gtk_tree_model_get (GTK_LIST_STORE(model), &iter, 0, &int_data, 1, &str_data, -1));
// Here the variables int_data and str_data should be filled with
// relevant data
}
}
它現在的作品非常幫助我,謝謝! –
沒有你的代碼,我只能給一個粗略的方向:
在回調你得到一個路徑,你行:
static void on_treeview1_row_activated(GtkTreeView *tree_view,
GtkTreePath *path,
GtkTreeViewColumn *column,
gpointer user_data)
{
...
從那裏你可以得到一個迭代器...
GtkTreeIter iter;
if (gtk_tree_model_get_iter(GTK_TREE_MODEL(list_store), &iter, path))
{
...,並從列表中存儲所需的字段:
gtk_tree_model_get(GTK_TREE_MODEL(list_store), &iter,
INDEX_field_1, ¶m1,
INDEX_field_2, ¶m2,
...
-1);
}
}
它現在有效,非常幫助我,謝謝! –
這是沒有足夠的代碼來給出具體的答案。至少,你應該添加如何聲明你的樹視圖,初始化等。最好的方法是創建一個[mcve]。 –
不幸的是,我無法發佈所有的代碼行,因爲它大約是2000行。我使用glade來構建整個UI。樹視圖的模型是一個列表存儲,列表存儲通過SQLite嵌入式數據庫填充。 所以我的問題很簡單,我認爲。當該行被選中時,如何獲取該行中包含的數據? –