選択した行を削除する
概要
前回と同様に行のイテレータを取得してからGtk::TreeStore::erase()を呼び出すと 削除される。ただし親の行を消すとツリーの子や孫の行も全て消えるので注意すること。
ソース
前々々回使用した treeview2.cppの void MainWin::on_bt_clicked() を下のものに置き換える。treeview5.cpp
// スロット関数 void MainWin::on_bt_clicked() { Glib::RefPtr< Gtk::TreeSelection > selection = m_treeview.get_selection(); Gtk::TreeModel::iterator it = selection->get_selected(); if( it ){ Gtk::TreeModel::Row row = *it; std::cout << "delete " << row[ m_record.m_col_name ] << std::endl; m_treestore->erase( row ); } }
コンパイル
必要なコンパイルオプションは pkg-config を使って取得する。g++ treeview5.cpp -o treeview5 `pkg-config gtkmm-2.4 --cflags --libs`
結果
任意の行をクリックしてから上部の「push」ボタンを押すと選択した行が削除される。