Gtk.TreeView의 신호에 어떻게 연결하여 행을 선택할 때 통보받을 수 있습니까? 현재 row_activated 신호에 연결하고 있지만 행을 두 번 클릭해야하며 한 번의 클릭으로 알림을 받고 싶습니다.treeview (liststore) 행을 선택하면 어떻게 알림을받을 수 있습니까?
예제 프로그램 : 나는 row_activated의 더블 클릭의 요구 사항을 제외하고 원하는
using Gtk;
public class MyListView : ScrolledWindow {
ListStore list_store;
TreeView tree_view;
GLib.List<string> list;
enum Columns {
TEXT,
N_COLUMNS
}
void make_list() {
list = new GLib.List<string>();
list.append("Hello World");
list.append("row 2");
list.append("<b>bold</b>");
list.append("<i>italic</i>");
list.append("...");
list.append("etc.");
}
public MyListView() {
make_list();
list_store = new ListStore(Columns.N_COLUMNS, typeof(string));
tree_view = new TreeView.with_model(list_store);
var text = new CellRendererText();
var column = new TreeViewColumn();
column.pack_start (text, true);
column.add_attribute (text, "markup", Columns.TEXT);
tree_view.append_column (column);
tree_view.set_headers_visible (false);
TreeIter iter;
foreach (string item in list) {
list_store.append(out iter);
list_store.set(
iter,
Columns.TEXT, item
);
}
this.add(tree_view);
tree_view.row_activated.connect(change);
}
public void change (TreePath path, TreeViewColumn col) {
var index = int.parse(path.to_string());
var item = list.nth_data(index);
print(index.to_string() + ". " + item + "\n");
}
}
public static void main (string[] args) {
Gtk.init(ref args);
var win = new Window();
win.add(new MyListView());
win.show_all();
win.destroy.connect(Gtk.main_quit);
Gtk.main();
}
이 프로그램은 정확하게 작동합니다.
get_selected()에서 선택 모드를 설정하지 마십시오. 또한 TreePath를 구문 분석하지 말고 ListStore를 사용하여 TreeIter로 데이터를 가져와야합니다. – lethalman